2011-12-18 3 views
3

У меня есть 3 проекта ASP.NET MVC с действием POST, что модель связывается с ViewModelfilterContext.Controller.ViewData.Model является недействительным в ActionFilter.OnActionExecuted

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

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

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

ответ

1

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

теперь к Filter

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

«Я предполагаю, что вы назначили модель в действии» - нет, я предположил, что структура автоматически заполняет ее. Существует ли общий способ доступа к параметрам Action, который был вызван до OnActionExecuted через filterContext? – kenwarner

1

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

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

Теперь вы сможете получить ret urned view в фильтре действия.

 Смежные вопросы

  • Нет связанных вопросов^_^