ASP MVC在部分视图中定义部分

时间:2013-07-26 08:28:45

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-partialview

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

我测试过的代码如下:

控制器:

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

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:39)

部分观看次数不支持@section代码。您应该在引用局部视图的视图中添加它们。有关详细信息,请参阅此问题:Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine

它基本上归结为这样一个事实,即引用partial的主视图应该负责包含Javascript,而不是部分视图本身。

答案 1 :(得分:6)

我知道这个问题超级过时了,但对于那些可能仍在疑惑的人(就像我一样):

您可以通过将部分视图中的@section scripts { }部分更改为此来解决此问题:

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

这将允许您在局部视图中使用脚本并实现类似于窗口小部件的结构。希望这有帮助!