C# 我的布局视图赢得';无法识别我的BaseModel对象

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

我按照中的说明为我的_layout.cshtml文件创建了一个强类型视图模型,因为我讨厌使用ViewBag。这是我的基本控制器,我的所有其他控制器都从中继承:

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
。模型实际上没有被填充。记住,这是一个布局视图。