ASP MVC Define Section in Partial View

我是研究僧i 提交于 2019-11-26 20:55:41

问题


As the title states, I want to define a section in a partial view.

My code that I've tested with are as follows:

Controller:

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>
}

Placing the section scripts in the Test.cshtml works fine so the problem isn't in the layout.

Anyone know how to do this?


回答1:


Partial views don't support @section tag. You should add them in the view which references the partial view. See this question for more information: Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine.

It basically comes down to the fact that the main view referencing a partial should be responsible for including Javascript, not the partial view itself.




回答2:


I know this question is super out-dated, but for anyone out there who might still wondering (as I was):

You can actually get around this problem by changing the @section scripts { } portion in your partial views to this:

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

This will allow you to have a script in your partial view and achieve that widget-like structure. Hope this helps!



来源:https://stackoverflow.com/questions/17876538/asp-mvc-define-section-in-partial-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!