2011-01-14 4 views
3

반복을 피하려고합니다. 내가 수정할 수없는 기본 클래스 컨트롤러에 액션이 있습니다. 내 작업에서 몇 가지 검사를하고, 기본 클래스 작업을 호출하고, 렌더링 전에 어떤 방식으로 결과를 수정하고 싶습니다. 하지만 내가해야 할 일의 일부는 ViewModel의 일부 속성을 수정하는 것이고 기본 클래스는 ActionResult을 반환합니다. ViewModelActionResult에서 얻을 방법이 없으므로 대부분 사용자 정의 메서드를 작성해야 할 수도 있습니다. 대부분은 기본 클래스의 기능을 모방 한 것입니다. 나는 이것을하지 않을 것을 강력히 희망한다. 어떤 제안?ActionResult에서 ViewModel을 검색 할 수 있습니까?

답변

8

ActionResult은 꽤 높은 수준의 기본 클래스이기 때문입니다. 해당 하위 유형 (예 : ViewResult)으로 전송 해보세요.

빠른 샘플 코드 :

public ActionResult WrapperAction() 
    { 
     // do your initial stuff 


     // call your base controller action and cast the result 
     // it would be safer to test for various result types and handle accordingly 
     ViewResult result = (ViewResult)base.SomeAction(); 

     object model = result.ViewData.Model; 

     // do something with the model 

     return result; 
    } 
+0

감사합니다, 그것은 작동 할 수 있습니다 : – Samo

관련 문제