2012-01-20 10 views
7

Chciałbym napisać do elementu nagłówka HTML niezależnie przez widok strony, a nie poprzez _Layout.cshtml, ponieważ każda strona będzie wymagać różnych skryptów, metadanych, tytułów itp. to zrobić w ASP.NET MVC 3, z C#/Razor?Pisanie na głos, ale nie przez _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> 

Odpowiedz

15

Można to zrobić za pomocą odcinków. Przejdź do _Layout.cshtml i dodać nową sekcję o nazwie głowa tak:

<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> 

Nowa sekcja jest dodawany z @RenderSection. Teraz w indywidualnych poglądów można dodawać treści do głowy tak:

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

Gdy kompletny widok jest renderowany javascript będzie renderowany w sekcji head tuż pod tagiem łącza. Możesz tam wszystko umieścić. Na przykład metatagi.

+0

Sekcje +1 to dobry sposób na osiągnięcie tego. – vcsjones

+0

W ten sposób dodaję opisy meta dla każdego widoku. –

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

jest to jedyne rozwiązanie do dołączenia go za pomocą JavaScript? Miałem nadzieję na coś, co wykorzystywałoby silnik widoku lub wbudowaną funkcjonalność asp.net. – Jack

+0

Jeśli chcesz użyć mechanizmu wyświetlania, powinieneś zmienić swój układ, aby akceptował warunkowe wpisy z każdego widoku w nagłówku, kevin ma dobrą sugestię w tym zakresie. –

Powiązane problemy