2012-01-20 20 views
7

Me gustaría escribir en el elemento principal HTML de forma independiente a través de la vista de página, no a través de _Layout.cshtml ya que cada página requerirá diferentes scripts, metadatos, títulos, etc. esto se hace en ASP.NET MVC 3, con C#/Razor?Escribiendo a la cabeza, pero no a través de _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> 

Respuesta

15

Usted puede hacer esto mediante el uso de secciones. Cesta de la _Layout.cshtml y añadir una nueva sección llamada cabeza así:

<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 nueva sección se añade a la @RenderSection. Ahora en sus puntos de vista individuales se pueden agregar contenido a la cabeza de esta manera:

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

Cuando la vista completa de la prestación del Javascript sería dictada en la sección de la cabeza justo debajo de la etiqueta de enlace. Podrías poner cualquier cosa allí. Por ejemplo, meta tags.

+0

+1 Las secciones son una buena forma de lograr esto. – vcsjones

+0

Así es como agrego mis meta descripciones para cada vista. –

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

¿es esta la única solución para agregarlo usando JavaScript? Esperaba algo que utilizara el motor de vista o la funcionalidad incorporada de asp.nets. – Jack

+0

Si desea utilizar el motor de visualización, debe cambiar su diseño para aceptar entradas condicionales de cada vista en el encabezado. Kevin tiene una buena sugerencia al respecto. –

Cuestiones relacionadas