创建一个基本视图模型,但似乎不能在onactionexecution中钩入它

本文关键字:不能 onactionexecution 一个 模型 视图 创建 | 更新日期: 2023-09-27 18:10:28

我创建了一个baseviewmodel,我的其他强类型视图模型从它继承。

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语句上设置断点时,似乎baseViewModel总是null。

如何设置基本的ViewData。模型是BaseViewModel?

创建一个基本视图模型,但似乎不能在onactionexecution中钩入它

onactionexecution查看模型还为时过早。

在action方法被调用之前调用。

你可以在onactionexecute中看到model

ViewData旨在将模型从控制器动作发送到视图。

你的OnActionExecuting钩子是在action方法被调用之前…这就是为什么你看到viewdata的模型为空。试试用OnActionExecuted代替。

然后,您可以使用关键字is检查模型是否属于该基本类型:

if(ViewData.Model != null && ViewData.Model is BaseModel){
    var base = ViewData.Model as BaseModel;
    // set common properties
}