Запись в голову, но не через _Layout.cshtml - PullRequest
8 голосов
/ 20 января 2012

Я хотел бы писать в элемент заголовка HTML независимо через просмотр страницы, а не через _Layout.cshtml, поскольку для каждой страницы требуются разные сценарии, метаданные, заголовки и т. Д. Это можно сделать в ASP.NET MVC 3,с C # / бритвой?

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

Ответы [ 3 ]

19 голосов
/ 21 января 2012

Вы можете сделать это с помощью разделов. Перейдите в _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. Теперь в ваших индивидуальных взглядах вы можете добавить контент в голову следующим образом:

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

Когда отображается полный вид, JavaScript будет отображаться в разделе заголовка чуть ниже тега ссылки. Вы можете положить что-нибудь там. Например, метатеги.

0 голосов
/ 21 января 2012

Вы пробовали использовать бритвенные секции ?

0 голосов
/ 20 января 2012
var newHeadElement = createSomeElementOrString;
document.getElementsByTag("head")[0].appendChild(newHeadElement);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...