У меня есть ActionFilter с переопределением для метода OnActionExecuted. FilterContext.Controller.ViewData.Model всегда имеет значение null для операции POST. Я нашел следующую статью, в которой, кажется, говорится, что она не должна быть нулевой, но, должно быть, это была более ранняя версия MVC. Это MVC3. Что я должен получить?
Наличие модели внутри ActionFilter
ОБНОВЛЕНИЕ:
Я разобрался с ответом на оригинальный вопрос. У меня был собственный ActionResult, который выводит JSON с пользовательским форматером даты. Проблема заключалась в том, что модель не устанавливается в контроллере.
В моем пользовательском ActionResult метод ExecuteResult передается ControllerContext, что было бы неплохо, если бы я мог установить там модель:
context.Controller.ViewData.Model = _data;
Но это в конце цикла, и результат в ActionFilter по-прежнему равен нулю. Кажется, это означает, что мне нужно вручную установить модель в контроллере:
ControllerContext.Controller.ViewData.Model = model;
Или
View(model);
Что означает, что мне нужно помнить, чтобы делать это каждый раз, когда я использую этот собственный ActionResult. Есть ли более элегантный способ?
ЕЩЕ ДРУГОЕ ОБНОВЛЕНИЕ:
Я нашел способ сделать это, но он не так элегантен, как я надеялся.
В моем конструкторе для комода ActionResult, который я отправил в контроллер, таким образом, по крайней мере, он всегда будет согласован:
public JsonNetResult(object data, Controller controller) {
SerializerSettings = new JsonSerializerSettings();
_data = data;
controller.ControllerContext.Controller.ViewData.Model = _data;
}