Как внедрить JavaScript в корневой макет из представления - PullRequest
0 голосов
/ 02 ноября 2011

Я использую ASP.NET MVC 3 с Razor view engine.

У меня есть вид макета с именем _Root.cshtml. Разметка HTML выглядит следующим образом:

<body>

     <div id="hd"></div>

     @RenderBody()

     <div id="ft"></div>

     @RenderSection("JavaScriptBodySection", false)

</body>

@RenderBody() есть, потому что макет отличается в зависимости от того, в каком виде вы находитесь. JavaScriptBodySection - это то место, где я хочу, чтобы весь мой JavaScript-код использовался представлением (внедренным представлением).

У меня есть другой макет, использующий этот макет _Root, который называется _Lr.cshtml. Разметка HTML выглядит следующим образом:

<div id="bd">

  <!-- Layout code here -->

  @RenderBody()

</div>

Затем, наконец, мое представление Index использует макет _Lr, и разметка выглядит следующим образом:

@{
    Layout = "~/Views/Shared/_Lr.cshtml";
}

<div class="main-content">
     <!-- Some stuff here -->
</div>

@section JavaScriptBodySection
{
    <script type="text/javascript"></script>
}

Жалуется, что в _Lr нет JavaScriptBodySection. Я не хочу этого здесь, потому что тогда мой JavaScript находится ниже моего div с id bd, я хочу это прямо перед закрывающим тегом body (в _Root). Как мне это сделать?

1 Ответ

1 голос
/ 02 ноября 2011

В _Lr.cshtml необходимо переопределить раздел:

<div id="bd">
    <!-- Layout code here -->
    @RenderBody()
</div>
@section JavaScriptBodySection {
    @RenderSection("JavaScriptBodySection", false)
}

Очевидно, что _Lr.cshtml происходит от Root.cshtml (вложенные макеты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...