Создайте модель базового вида, но не можете подключиться к ней в OnActionExecuting
Я создаю базовую модель, от которой наследуются мои другие строго типизированные модели представления.
BaseController:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var baseViewModel = ViewData.Model as BaseViewModel;
if (baseViewModel != null)
{
// set common properties that I want to use in all views
}
}
Теперь, когда я устанавливаю точку останова в if cluase, кажется, что baseViewModel всегда равен нулю.
Как мне установить базовый ViewData.Model для BaseViewModel?
2 ответа
OnActionExecuting слишком рано, чтобы посмотреть на модель.
Вызывается до вызова метода действия.
Вы можете увидеть модель в OnActionExecuted.
ViewData
предназначен для отправки модели из действия контроллера для просмотра.
Ваш OnActionExecuting
hook - ДО того, как вызывается метод действия... поэтому вы видите модель данных представления как нулевую. Попробуйте использовать OnActionExecuted
вместо.
Затем вы можете проверить, принадлежит ли модель этому базовому типу, используя ключевое слово is
сюда:
if(ViewData.Model != null && ViewData.Model is BaseModel){
var base = ViewData.Model as BaseModel;
// set common properties
}