web-dev-qa-db-ja.com

ASP MVC Define Partial Section in Section View

タイトルが示すように、部分ビューでセクションを定義したいと思います。

私がテストしたコードは次のとおりです。

コントローラ:

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を配置するとうまく機能するため、レイアウトに問題はありません。

誰もこれを行う方法を知っていますか?

22
Jeandre Pentz

部分ビューは@sectionタグをサポートしていません。部分ビューを参照するビューにそれらを追加する必要があります。詳細については、この質問を参照してください: Razor View Engineを使用した部分ビューASP.NET MVC 3から特定のセクションへのコンテンツの挿入

基本的に、パーシャルビュー自体ではなく、パーシャルを参照するメインビューがJavascriptを含める必要があるという事実に帰着します。

39
Henk Mollema

私はこの質問が非常に時代遅れであることを知っていますが、まだ疑問に思うかもしれない(私がそうだった)世の中の誰にとっても:

実際にこの問題を回避するには、@section scripts { }これに対する部分ビューの一部:

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

これにより、部分ビューでスクリプトを使用して、ウィジェットのような構造を実現できます。お役に立てれば!

6
k1234