C# 我的布局视图赢得';无法识别我的BaseModel对象
我按照中的说明为我的_layout.cshtml文件创建了一个强类型视图模型,因为我讨厌使用ViewBag。这是我的基本控制器,我的所有其他控制器都从中继承:C# 我的布局视图赢得';无法识别我的BaseModel对象,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我按照中的说明为我的_layout.cshtml文件创建了一个强类型视图模型,因为我讨厌使用ViewBag。这是我的基本控制器,我的所有其他控制器都从中继承: public class BaseController : Controller { protected BaseViewModel ModelBase { get; private set; } protected override void OnResultExecuting(ResultExecutingConte
public class BaseController : Controller
{
protected BaseViewModel ModelBase { get; private set; }
protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
var contextItems = filterContext.HttpContext.Items;
if (contextItems["ModelBase"] == null)
filterContext.HttpContext.Items["ModelBase"] = this.ModelBase;
base.OnResultExecuting(filterContext);
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
this.ModelBase = new BaseViewModel
{
Theme = Request.QueryString["theme"] ?? "cyborg"
};
base.OnActionExecuting(filterContext);
}
}
我所要做的就是获取一个名为“theme”的查询字符串变量,并将其值添加到
BaseViewModel
上的theme属性中。根据这篇博文,我应该能够在布局视图中执行@ModelBase.Theme
,但我没有intellisense,当我运行它时,它会抛出一个错误。您必须使用@model BaseViewModel
在视图中强烈键入您的模型。然后您可以使用@Model.Theme
我认为您需要一个定制的razor视图基类,如Phil Haack的帖子所述:
只需将视图键入
BaseViewModel
。模型实际上没有被填充。记住,这是一个布局视图。