2012-01-17 6 views
1

누군가가 인터뷰에서 나에게 다음과 같은 질문을 할 수 없다. 누가 좀 도와주세요.컨트롤러에 Static ActionResult 메서드를 만들 수 있습니까?

컨트롤러에 정적 ActionResult 메서드를 만들 수 있습니까? 예인 경우. 혜택이란 무엇입니까? 그리고 없다면. 그 이유는 무엇입니까?

+3

시도해 보셨습니까? –

+1

"ActionResult 메서드"란 무엇입니까? 'ActionResult'를 반환하는 방법? 당연하지; 왜 안돼? – SLaks

+0

@EAGER_STUDENT 조금 늦었습니다 (하지만 너무 늦은 것은 아닙니다). 정적 컨트롤러를 만드는 것에 대한 대답은 실제로 나쁜 생각처럼 들리지만,이 질문은 일반 컨트롤러의 정적 액션 메서드에 관한 것입니다. 즉, 귀하의 링크는 오해의 소지가 있습니다. – jahu

답변

5

"ActionResult 메서드"가 ActionResult를 반환하는 메서드 인 경우 정적으로 선언 할 수 있지만 해당 동작을 시작할 때 호출되지 않습니다. 액션을 호출 할 때 ASP.NET MVC는 ControllerFactory를 사용하여 컨트롤러의 인스턴스를 만들고 메서드가 정적이므로 인스턴스와 관련이 없으므로 MVC에서 호출하지 않습니다.

+0

"따라서 호출되지 않습니다". MVC에 의해, 아니오. 그러나 다른 클래스 또는 내부에서 호출 할 수 있습니다. –

+0

감사합니다. –

+0

또한 뷰를 반환하려면 컨트롤러 인스턴스가 필요합니다. 정적 메서드를 선언하고 문자열을 반환 할 수는 있지만 찾을 수는 없습니다. – RickAndMSFT

1

Don controllercontext와 같은 모든 컨트롤러 속성에 더 이상 액세스 할 수 없으므로 정적 액션 메서드를 만드는 것이 좋습니다.

+0

컨트롤러의 확장을 생성하면 이러한 제한도 공유됩니다. 'View','PartialView' 등과 같은 컨텐트 생성 메소드를 호출 할 수 없다는 것도 문제가 되겠지만, 적어도 이것은 컨트롤러 메소드를 사용하는 것보다는 수동으로 특정 'Result' 클래스를 수동으로 생성함으로써 부분적으로 극복 될 수 있습니다 . – jahu

관련 문제