Подтвердить что ты не робот

ASP MVC Определить раздел в частичном представлении

Как указано в заголовке, я хочу определить раздел в частичном представлении.

Мой код, который я тестировал, выглядит следующим образом:

Контроллер:

public ActionResult Test()
{
    return View();
}

public ActionResult PartialTest()
{
    return PartialView("_PartialTest");
}

Test.cshtml:

@{
    ViewBag.Title = "Test";
}

<h2>Test</h2>

@Html.Action("PartialTest")

_PartialTest.cshtml:

<p>partial Test</p>

@section scripts {
    <script type="text/javascript">
        $(document).ready(function() {
            alert("Test");
         });
     </script>
}

Размещение раздела scripts в Test.cshtml отлично работает, поэтому проблема не в макете.

Кто-нибудь знает, как это сделать?

4b9b3361

Ответ 1

Частичные представления не поддерживают тег @section. Вы должны добавить их в представление, которое ссылается на частичный вид. См. Этот вопрос для получения дополнительной информации: Ввод содержимого в определенные разделы из частичного представления ASP.NET MVC 3 с помощью механизма просмотра Razor.

Это в основном сводится к тому, что основное представление, ссылающееся на частичное, должно отвечать за включение Javascript, а не за частичное представление.

Ответ 2

Я знаю, что этот вопрос слишком устарел, но для тех, кто может все еще задаваться вопросом (как я был):

Вы можете обойти эту проблему, изменив часть @section scripts { } в ваших частичных представлениях:

@using (Html.BeginScriptContext())
{
    Html.AddScriptBlock(
        @<script type="text/javascript">
        //rest of script
    );
}

Это позволит вам иметь script в вашем частичном представлении и достичь этой виджетовой структуры. Надеюсь, это поможет!