2012-01-20 52 views
7

我想通過頁面視圖獨立寫入HTML頭元素,而不是通過_Layout.cshtml,因爲每個頁面將需要不同的腳本,元數據,標題等。這在ASP.NET MVC 3中用C#/ Razor完成?寫頭,但不是通過_Layout.cshtml

@using Test.Models; 
@model IEnumerable<Player> 
<!--   
Put JavaScript, CSS etc... Into the page <head> here. 
--> 

    <h2>Index</h2> 
    <table id="scores"> 
     <tr> 
      <th>Name</th> 
      <th>Age</th> 
      <th>Gender</th> 
     </tr> 
    @foreach(Player p in Model) 
    { 
     <tr> 
      <td>@p.name</td> 
      <td>@p.age</td> 
      <td>@p.gender</td> 
     </tr> 
    } 
    </table> 
    <canvas id="game" width="800" height="600"> 
     <p>Download a modern browser.</p> 
    </canvas> 

回答

15

您可以通過使用部分做到這一點。轉到您的_Layout.cshtml並添加一個名爲head的新部分,如下所示:

<head> 
<meta charset="utf-8" /> 
<title>@ViewBag.Title</title> 
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
@RenderSection("head", false) 
</head> 

新部分已添加@RenderSection。當完整的視圖呈現將在頭段剛的鏈接標籤下面呈現的JavaScript

@section head 
{ 
<script type="text/javascript""> 
    //Your java script here 
</script> 
} 

:現在,在您的個人看法,你可以添加內容到頭部這樣。你可以把任何東西放在那裏。例如,元標記。

+0

+1部分是實現這一目標的好方法。 – vcsjones

+0

這是我爲每個視圖添加元描述的方式。 –

0
var newHeadElement = createSomeElementOrString; 
document.getElementsByTag("head")[0].appendChild(newHeadElement); 
+0

這是使用JavaScript追加它的唯一解決方案嗎?我希望利用視圖引擎或功能中建立的asp.net。 – Jack

+0

如果你想利用視圖引擎,那麼你應該改變你的佈局以接受頭部中每個視圖的條件條目,凱文在這方面有一個很好的建議。 –