@MVC Model é nulo no filtro de ação OnExecuted ... ou uma maneira mais elegante de definir o model
Eu tenho um ActionFilter com uma substituição no método OnActionExecuted. O filterContext.Controller.ViewData.Model é sempre nulo em uma operação POST. Eu encontrei o seguinte artigo que parece dizer que não deve ser nulo, mas isso deve ter sido uma versão anterior do MVC. Este é o MVC3. O que devo receber?
isponibilidade do modelo no ActionFilter
ATUALIZAR
Eu descobri a resposta para a pergunta original. Eu tinha um ActionResult personalizado que gera JSON com um formatador de data personalizado. O problema era que o modelo não está sendo definido no controlado
No meu ActionResult personalizado, o método ExecuteResult passa pelo ControllerContext, o que seria bom se eu pudesse definir o Model lá:
context.Controller.ViewData.Model = _data;
Mas isso é tarde demais no ciclo e o resultado ainda é nulo no ActionFilter. Isso parece significar que eu preciso definir manualmente o modelo no controlador:
ControllerContext.Controller.ViewData.Model = model;
O
View(model);
O que significa que preciso lembrar disso sempre que usar esse ActionResult personalizado. Existe uma maneira mais elegante?
Ainda outra atualização:
Eu encontrei uma maneira de fazer isso, simplesmente não é tão elegante quanto eu esperav
No meu construtor para o primeiro ActionResult que estou enviando no controlador, dessa forma pelo menos sempre será consistente:
public JsonNetResult(object data, Controller controller) {
SerializerSettings = new JsonSerializerSettings();
_data = data;
controller.ControllerContext.Controller.ViewData.Model = _data;
}