2012-01-20 4 views
7

それぞれのページには異なるスクリプト、メタデータ、タイトルなどが必要となるので、_Layout.cshtmlではなく、ページビューを使ってHTMLヘッド要素に独立して書きたいと思う。これは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> 
<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が付加されています。

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

完全なビューがレンダリングされるとJavascriptを単にリンクタグの下にヘッド部にレンダリングされます:今、あなたの個々のビューに次のように頭にコンテンツを追加することができます。あなたはそこに何かを置くことができます。例えば、メタタグ。

+0

+1これを行うにはセクションが良い方法です。 – vcsjones

+0

これは、ビューごとにメタ記述を追加する方法です。 –

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

これはJavaScriptを使用して追加する唯一のソリューションですか?私は、ビューエンジンやasp.netsの機能を利用して何かを期待していました。 – Jack

+0

ビューエンジンを利用する場合は、ヘッドの各ビューから条件付きのエントリを受け入れるようにレイアウトを変更する必要があります。ケビンはこの点に関して良い提案をしています。 –

関連する問題