Могу ли я получить ViewModel из ActionResult? - PullRequest
3 голосов
/ 15 января 2011

Попытка избежать повторения здесь. У меня есть действие в контроллере базового класса, которое мне запрещено изменять. Мне бы хотелось, чтобы мои действия выполняли некоторые проверки, вызывали действие базового класса и каким-то образом модифицировали результат перед рендерингом. Но часть того, что мне нужно сделать, заключается в изменении некоторых свойств ViewModel, а базовый класс возвращает ActionResult. Я не вижу способа получить ViewModel из ActionResult, и поэтому мне, возможно, придется написать собственный метод, большинство из которых просто имитируют действия базового класса. Я бы предпочел не делать этого. Есть предложения?

1 Ответ

9 голосов
/ 15 января 2011

Это потому, что 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;
    }
...