タイトルが示すように、部分ビューでセクションを定義したいと思います。
私がテストしたコードは次のとおりです。
コントローラ:
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>
}
Test.cshtmlにセクションscripts
を配置するとうまく機能するため、レイアウトに問題はありません。
誰もこれを行う方法を知っていますか?
部分ビューは@section
タグをサポートしていません。部分ビューを参照するビューにそれらを追加する必要があります。詳細については、この質問を参照してください: Razor View Engineを使用した部分ビューASP.NET MVC 3から特定のセクションへのコンテンツの挿入 。
基本的に、パーシャルビュー自体ではなく、パーシャルを参照するメインビューがJavascriptを含める必要があるという事実に帰着します。
私はこの質問が非常に時代遅れであることを知っていますが、まだ疑問に思うかもしれない(私がそうだった)世の中の誰にとっても:
実際にこの問題を回避するには、@section scripts { }
これに対する部分ビューの一部:
@using (Html.BeginScriptContext())
{
Html.AddScriptBlock(
@<script type="text/javascript">
//rest of script
);
}
これにより、部分ビューでスクリプトを使用して、ウィジェットのような構造を実現できます。お役に立てれば!