2013-02-27 2 views
11

6 개의 컨트롤러에서 동일한 메서드를 호출했습니다. 지금은 각 컨트롤러간에 복사하여 붙여 넣습니다. 모든 컨트롤러는 동일한 네임 스페이스에 있습니다. 메서드는 전달 된 ID를 기반으로 bool을 반환합니다. 예를 들어 :여러 컨트롤러 간의 메서드 공유 C# MVC4

public bool CheckSubmission(int id =0) 
{ 
    Get Records from DB with criteria 
    If Record available return true 
    else return false 
} 

나는 잠시 멀리 C++의 C#에서왔다 번이를 작성하는 방법을 찾을 수 없습니다. 나는 Rails에서 공유 함수를 ApplicationController에 넣을 수 있음을 알고있다. 나는 이것에 관한 몇 가지 질문을 보았지만 명확한 예는 아니며, 그들은 OOP에서 읽은 행에 더 가깝다. 내가 이것으로 돌아 가면 어떤 도움이라도 인정 될 것입니다.

답변

27

Controller에서 상속받은 ControllerBase 클래스를 만들고이 메서드를 삽입하십시오.

컨트롤러가 기본 컨트롤러에서 상속 받도록하십시오.이 컨트롤러를 사용하면이 구현이 사용됩니다.

public class ControllerBase : Controller 
{ 
    public bool CheckSubmission(int id = 0) 
    { 
    Get Records from DB with criteria 
    If Record available return true 
    else return false 
    } 
} 

public class SomethingController : ControllerBase 
{ 
    // Can use CheckSubmission in here 
} 
+0

예를 들어 주셔서 감사합니다. 완벽하게 일했습니다. – Xaxum

+2

특히이 제안이 마음에 들지 않지만 합의에 따라 사용했습니다. 확장 메서드가 더 좋을 것입니다. 정적 bool CheckSubmission (이 컨트롤러 컨트롤러, int id) {blah; 어쩌구. } 그러면 컨트롤러를 상속하는 것을 기억할 필요가 없습니다. 기본 컨트롤러 – stephenbayer

+2

을 더 잘 유지 관리하는 것이 어려울 때,이 검사는 필요한 * 컨트롤러 * 클래스로 이동되어 필요한 컨트롤러에 (생성자) 종속성으로 주입되어야합니다. – superjos

관련 문제