我正在使用visual studio 11开发一个ASP.net 4,MVC4(RC)项目。 我试图渲染一个呈现局部视图的MVC4 Razor视图。我的部分视图需要一些JavaScript。 在我的部分视图中,当我在脚本部分中包含我的javascript时,如下所示它似乎没有加载。
@section Scripts {
<script type="text/javascript">
$(function () {
alert("test");
});
</script>
}
如果我删除脚本部分,它会失败,因为当文档就绪代码运行时,jquery库(在我的_Layout.cshtml页面上捆绑并呈现)尚未加载。
<script type="text/javascript">
$(function () {
alert("test");
});
</script>
_Layout Page代码加载jquery库
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
有没有人知道这方面的解决方案,还是我只是以错误的方式去做?它破坏了我的头!!
答案 0 :(得分:10)
不要将您的脚本包装在部分的document.ready
中:
@section Scripts {
<script type="text/javascript">
alert("test");
</script>
}
啊,不要将脚本放在partials中。 Javascript代码应放在单独的javascript文件中。如果你想在加载部分时执行一些javascript,你只需将这个脚本外部化为一个可重用的函数/插件,你可以在部分加载后调用它。
答案 1 :(得分:4)
终于有了这个工作。我从部分视图中删除了我的javascript并将其放在脚本部分的父视图(不是部分的)中。这个脚本部分是在创建带有脚手架(Create)的视图时自动创建的,并且放在了页。为了实现这一点,我必须将它移到页面顶部 - 在调用渲染我的部分之前。
答案 2 :(得分:2)
ClientDependency正好解决了这个问题,并允许您将部分视图的脚本引用添加到页面末尾(或指定的任何位置)的部分视图中。它还逐页处理捆绑,版本控制和缩小。
确保脚本引用的开销是在“父”视图而不是部分视图上并没有真正打扰我,但如果你有大量的部分需要他们自己的脚本和CSS,那么Client Dependency可能会有所帮助。