2011-01-14 74 views
3

试图避免在这里重复。我有一个基础控制器的操作,我不允许修改。我希望我的操作能够执行一些检查,调用基类操作,并在呈现之前以某种方式修改结果。但我需要做的一部分涉及修改ViewModel的某些属性,而基类返回ActionResult。我没有办法从ActionResult得到ViewModel,所以我可能不得不编写一个自定义方法,其中大部分只会模仿基类正在做什么。我宁愿不这样做。有什么建议么?我可以从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 2011-01-14 21:57:20

相关问题