Доступность модели внутри ActionFilter
-
20-09-2019 - |
Вопрос
Я создал новый ActionFilter для ASP.NET Приложения MVC, которое я создаю.У меня есть действие, которое принимает Http Post, а аргумент метода action принимает объект, для которого я создал и зарегистрировал пользовательскую модель binder.
Я заметил , что внутри IActionFilter.OnActionExecuting
значение для filterContext.Controller.ViewData.Model
всегда есть null
несмотря на то, что это выглядит так, как будто model binder всегда вызывается перед action filter OnActionExecuting
способ.В отличие от этого внутри IActionFilter.OnActionExecuted
метод того же действия фильтрует значение для filterContext.Controller.ViewData.Model
не является нулевым.
Ребята, вы не знаете, это намеренно или ошибка?Если по дизайну есть на них какие-либо ссылки, которые описывают, почему это так?Спасибо.
Решение
Поскольку действие контроллера отвечает за создание Модели и передачу ее в Представление, как Модель могла существовать до вызова действия?Вы не знаете, какая модель будет создана, пока это не произойдет.
Другие советы
Сайед, обычно вы устанавливаете модель во время выполнения действия.Следовательно, естественно, что модель имеет значение null во время выполнения OnActionExecuting, которое происходит перед вызовом действия.