我按照this blog post中的說明爲我的_layout.cshtml文件創建了強類型的視圖模型,因爲我討厭使用ViewBag。這是我的基本控制器,我的所有其他控制器繼承:我的佈局視圖將無法識別我的BaseModel對象
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);
}
}
所有我想要做的就是抓住一個所謂的「主題」的查詢字符串變量並增加它的價值就BaseViewModel
Theme屬性。根據博客文章,我應該能夠在佈局視圖中執行@ModelBase.Theme
,但我沒有獲得任何智能感知,並且在運行時會引發錯誤。
所有這一切確實是類型的視圖'BaseViewModel'。該模型實際上並沒有被填充。請記住,這是一個佈局視圖。 – Chev