我可以从ActionResult中检索ViewModel吗?

时间:2011-01-14 21:29:14

标签: c# asp.net-mvc viewmodel actionresult

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

1 个答案:

答案 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;
    }