26

正如标题所述,我想在局部视图中定义一个部分。

我测试过的代码如下:

控制器:

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

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

测试.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 中可以正常工作,因此问题不在布局中。

有人知道怎么做吗?

4

2 回答 2

41

部分视图不支持@section标签。您应该将它们添加到引用局部视图的视图中。有关更多信息,请参阅此问题:Injecting content into specific section from a partial view ASP.NET MVC 3 with Razor View Engine

它基本上归结为引用部分视图的主视图应该负责包含 Javascript,而不是部分视图本身。

于 2013-07-26T09:02:29.823 回答
6

我知道这个问题已经过时了,但是对于那些可能仍然想知道的人(就像我一样):

实际上,您可以通过将@section scripts { }部分视图中的部分更改为以下内容来解决此问题:

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

这将允许您在局部视图中拥有一个脚本并实现类似小部件的结构。希望这可以帮助!

于 2017-05-16T00:21:07.343 回答