【发布时间】:2011-12-22 04:42:44
【问题描述】:
我正在尝试将我所有的 javascript 包含移动到页面底部。我将 MVC 与 Razor 一起使用。我写了一个辅助方法来注册脚本。它按照它们注册的顺序保存脚本,并且不包括欺骗。
@{ Html.RegisterScript("/scripts/someFile.js"); }
然后在结束正文标记之前,我做了这样的事情:
@Html.RenderScripts()
</body>
如果脚本全部注册在一个页面上,这一切都可以正常工作。如果我在布局中注册一些脚本,在我的内部视图中注册一些脚本,事情就会出错。基本上,内部视图在布局之前执行。所以事件虽然内部视图中的脚本依赖于外部视图中的脚本,但它们是事先注册的。
所以如果我有 _Master.cshstml 并且它有
@{
Html.RegisterScript("script1.js");
Html.RegisterScript("script2.js");
}
然后我有 InnerView.cshtml 和 _Master.cshtml 作为它的布局,在我有的视图中
@{
Html.RegisterScript("script3.js");
}
脚本按以下顺序呈现:script3、script1、script 2。
有什么办法可以强制布局在内部视图之前执行?我已经尝试过在整个地方移动东西,并且内部视图似乎总是首先执行。也许这是意料之中的?如果是这样,对我来说完成我想做的事情的最佳方式是什么?
【问题讨论】:
标签: c# javascript html asp.net-mvc-3 razor