我需要在视图中的页面部分中呈现元标记。例如,视图包含所有产品信息,我想将产品信息添加到头部但只能从产品页面访问。
有没有人有任何想法?
谢谢
在您的布局中,在头部定义一个部分。我们可以使用RenderSection
辅助方法来做到这一点。
RenderSection
当您想要在布局页面中呈现可选内容部分时使用该方法。所以我们将像这样更新我们的布局
<head>
<title>@ViewBag.Title</title>
<script src="@Url.Content("~/Scripts/jquery.min.js")" type="text/javascript" />
@RenderSection("MetaContent", false)
</head>
<body>
@RenderBody()
</body>
现在在您的页面/视图中,您可以传递此部分的内容。我会在我的视图模型/基础视图模型中添加一个新属性来保存元描述。因此,在您的 GET Action 方法中,您设置了MetaDescription
属性值。
在您看来,这是对 ProductViewModel 的强类型
@model ProductViewModel
<h1>@Model.ProductName</h1>
<div>@Model.ProductDesc</div>
@section MetaContent
{
<meta name="description" content="@Model.MetaDescription" />
}
当我们在布局中定义部分时,我们将false
其用作第二个参数值。这意味着不需要此部分。您不需要从所有视图/页面传递元信息。
查看 Scottgu关于部分和布局的博客文章。
查看定义和使用部分 - 它们允许您从视图写入其他区域。
或者在 ViewBag 中定义元标记项,在头部写出 ViewBag.Meta 作为元标记并在控制器中填充 ViewBag 属性 - 顺序工作正常。