2013-03-23 52 views
1

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

有没有人有任何想法?

感谢

回答

2

查找到定义和使用的部分 - 它们允许你写从视图等领域。

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

+0

我做到了这一点,工作得很好!感谢Moo哈哈 – Funky 2013-03-28 10:59:06

6

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

现在在您的网页/视图中,您可以传递本节的内容。我会添加一个新的属性到我的viewmodel/base viewmodel来保存元描述。因此,在您的GET操作方法中,您可以设置MetaDescription属性值。

而且在你看来,这是强类型到ProductViewModel

@model ProductViewModel 
<h1>@Model.ProductName</h1> 
<div>@Model.ProductDesc</div> 
@section MetaContent 
{ 
    <meta name="description" content="@Model.MetaDescription" /> 
} 

当我们在布局定义的部分,我们使用false作为第二个参数值。这意味着这一部分不是必需的。你不需要传递所有视图/页面的元信息。

结账Scottgu的blog post关于部分和布局。