更新:由于这不是 MVC4 站点,而是独立的 Razor 模板,因此 MVC 的标准答案不适用。本页展示了如何使用 PageData 对象在页面之间传递数据自定义站点范围的行为
我原来的答案并不真正适用,但这些概念仍然有效:
至少有四个对象可以用来完成此任务。也许最简单的是 ViewBag。看何时使用ViewBag、ViewData...了解更多详情。
@{
ViewBag.topNav = "services";
}
您可能会发现这有点问题,因为 ViewBag 不提供强类型属性。如果ViewBag.topNav不存在,则访问时返回null。
但是,本文中的任何容器都不会提供类型检查。这让我想到了可以处理这个问题的第四个对象。这是传递给视图的模型对象。看使用视图模型了解更多详情。
public class IndexViewModel {
public string TopNav { get; set; }
// other view properties here
}
在你的控制器中:
public ActionResult Index() {
var model = new IndexViewModel {
TopNav = "services",
// set other properties here
}
return View(model);
}
在索引视图中:
@model IndexViewModel
@RenderPage("~/Shared/_Header.cshtml",Model)
_Header.cshtml:
@model IndexViewModel
<h2>@Model.topNav</h2>
最后要注意的一点是考虑使用共享 Layout.cshtml,而不是在每个页面中嵌入页眉和页脚。