2

我需要在视图中的页面部分中呈现元标记。例如,视图包含所有产品信息,我想将产品信息添加到头部但只能从产品页面访问。

有没有人有任何想法?

谢谢

4

2 回答 2

13

在您的布局中,在头部定义一个部分。我们可以使用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关于部分和布局的博客文章。

于 2013-03-23T21:18:25.363 回答
2

查看定义和使用部分 - 它们允许您从视图写入其他区域。

或者在 ViewBag 中定义元标记项,在头部写出 ViewBag.Meta 作为元标记并在控制器中填充 ViewBag 属性 - 顺序工作正常。

于 2013-03-23T20:36:20.260 回答