filterContext.Controller.ViewData.Model является нулевым в ActionFilter.OnActionExecuted - PullRequest
3 голосов
/ 18 декабря 2011

У меня есть проект ASP.NET MVC 3 с действием POST, которое модель привязывает к модели представления

[HttpPost]
public virtual ActionResult Reply(ReplyViewModel viewModel)
{
    // ...
}

У меня есть ActionFilter, и я хочу посмотреть на эту модель представления в OnActionExecuted, но ViewData.Model равно нулю. Я неправильно понимаю, что такое ViewData.Model?

public class CopyViewModelToTempDataAttribute : System.Web.Mvc.ActionFilterAttribute
{
    public override void OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext)
    {
        // filterContext.Controller.ViewData.Model is null
    }
}

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Ваше действие контроллера должно пройти модель представления при возврате представления:

[HttpPost]
public virtual ActionResult Reply(ReplyViewModel viewModel)
{
    // ...
    return View(someViewModel);
}

Теперь вы сможете получить возвращенную модель представления в фильтре действий.

1 голос
/ 18 декабря 2011

Это может быть решением этой проблемы 1. Я предполагаю, что вы назначили Модель в действии

теперь перейдем к фильтру

public override void OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext)
    {
        if(filterContext.HttpContext.Request.HttpMethod == "POST")
        {
        // Get your model here.
        }
    }
...