尽量避免重复。我在基类控制器中有一个动作,我不允许修改。我希望我的动作做一些检查,调用基类操作,并在渲染之前以某种方式修改结果。但我需要做的部分工作包括修改ViewModel
的一些属性,基类返回ActionResult
。我认为无法从ViewModel
获取ActionResult
,因此我可能必须编写一个自定义方法,其中大多数方法只是模仿基类正在做什么。我强烈不愿意这样做。有什么建议吗?
答案 0 :(得分:9)
那是因为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;
}