2011-07-09 111 views

回答

0

我想將其添加爲一個單獨的觀點 - 這樣你可以撥打:從你的各種佈局內

@{Html.RenderAction("Head", "Header");} 

,並具有相同的正確的報頭數據渲染。

心連心

0

通常,母版頁,我們把一個ContentPlaceHolder控制,稱之爲TitleContent這樣的:

<head> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
</head> 

,在兒童網頁:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Some Title 
</asp:Content> 

同樣的事情可以爲Meta標籤完成,或者您可以爲HeadContent製作完整的ContentPlaceHolder,並在每個頁面中分別填充(標題/元...)。

+0

問題是關於MVC應用程序,而不是WebForms應用程序 –

+1

是的,MVC。我有一個完整的MVC項目,並使用上面的語法。 OP沒有說明他在使用Razor。 –

+1

@alexanderb asp.net WebForms View引擎可以簡單地用於mvc,如果Gemma使用web表單視圖引擎,答案會很好。我不明白你在抱怨什麼 – archil

5

我會爲標題使用ViewBag,爲其餘的頭部內容使用RenderSection。這正好總綱文件(_Layout.cshtml):

<head> 
    <title>@ViewBag.Title</title> 
    @RenderSection("head", false); 
</head> 

在你個人的意見,您將添加:

@{ 
    ViewBag.Title = "My Page Title"; 
} 

@section head { 
    <meta name="description" content="best site ever"> 
} 

編輯:

注意,@section head {...}塊是可選的。如果省略此塊,則不會收到編譯錯誤。在你想要提供元數據的視圖上。

+0

這意味着你將不得不在每個頁面上指定元 - 不完全乾燥? – iwayneo

+0

如果您希望網站中的每個視圖都提供相同的元數據,我會考慮替代方案。 RenderSection允許個別視圖的靈活性來支持定製的元數據。 – jglouie

0

您必須將元標記放在HTML的HEAD標記中。對於MVC應用程序,它取決於你有頭。它可以是佈局(Layout.cshtml)的頁面(* .cshmtl)。放置在佈局中比較好,因爲元信息是通過其餘頁面共享的。

// *.cshtml 

<!DOCTYPE html> 
<html> 
<head> 
    <title>@ViewBag.Title</title> 
    <meta ... /> 
</html> 
</head> 
相關問題