2013-03-23 51 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關於部分和佈局。