正如标题所述,我想在局部视图中定义一个部分。
我测试过的代码如下:
控制器:
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
部分可以正常工作,因此问题不在布局中。
任何人都知道怎么做?
答案 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
);
}
这将允许您在局部视图中使用脚本并实现类似于窗口小部件的结构。希望这有帮助!