2

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

基础控制器:

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?

4

2 回答 2

4

OnActionExecuting还为时过早,无法查看模型。

在调用操作方法之前调用。

您可以在 OnActionExecuted 中看到模型。

于 2013-04-23T21:32:12.870 回答
2

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

您的OnActionExecuting钩子是在调用操作方法之前...这就是为什么您将视图数据的模型视为空的原因。尝试OnActionExecuted改用。

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

if(ViewData.Model != null && ViewData.Model is BaseModel){

    var base = ViewData.Model as BaseModel;
    // set common properties
}
于 2013-04-24T00:35:12.643 回答