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 отлично работает, поэтому проблема не в макете.
Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Частичные представления не поддерживают тег @section
. Вы должны добавить их в представление, которое ссылается на частичный вид. См. Этот вопрос для получения дополнительной информации: Ввод содержимого в определенные разделы из частичного представления ASP.NET MVC 3 с помощью механизма просмотра Razor.
Это в основном сводится к тому, что основное представление, ссылающееся на частичное, должно отвечать за включение Javascript, а не за частичное представление.
Ответ 2
Я знаю, что этот вопрос слишком устарел, но для тех, кто может все еще задаваться вопросом (как я был):
Вы можете обойти эту проблему, изменив часть @section scripts { }
в ваших частичных представлениях:
@using (Html.BeginScriptContext())
{
Html.AddScriptBlock(
@<script type="text/javascript">
//rest of script
);
}
Это позволит вам иметь script в вашем частичном представлении и достичь этой виджетовой структуры. Надеюсь, это поможет!