2012-01-20 13 views
7

Vorrei scrivere sull'elemento head HTML in modo indipendente tramite la visualizzazione di pagina, non tramite _Layout.cshtml poiché ogni pagina richiede script, metadati, titoli diversi ecc. questo è fatto in ASP.NET MVC 3, con C#/Razor?Scrittura a capo, ma non via _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> 

risposta

15

È possibile farlo utilizzando sezioni. Vai al tuo _Layout.cshtml e aggiungere una nuova sezione chiamata testa come questo:

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

La nuova sezione si aggiunge al @RenderSection. Ora nel vostro punto di vista individuale è possibile aggiungere contenuti alla testa in questo modo:

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

Quando la vista completa è reso il javascript sarebbe reso nella sezione head appena sotto il tag link. Potresti mettere qualcosa lì dentro. Ad esempio, meta tag.

+0

+1 Le sezioni sono un buon modo per ottenere questo risultato. – vcsjones

+0

Ecco come aggiungo le mie meta descrizioni per ogni vista. –

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

questa è l'unica soluzione per aggiungerla utilizzando JavaScript? Speravo in qualcosa che utilizzava il motore di visualizzazione o asp.nets integrato nella funzionalità. – Jack

+0

Se si desidera utilizzare il motore di visualizzazione, è necessario modificare il layout per accettare le voci condizionali da ciascuna vista nella testa, kevin ha un buon suggerimento al riguardo. –

Problemi correlati