我正在处理ASP.NET MVC 4
申请。我想创建自己的包含.js
文件的包,我将用于验证,但由于某种原因,它不起作用。只是要提一下 - 如果我在给定视图中渲染我的所有脚本,一切都工作得很好,如:
@Scripts.Render("~/Scripts/jquery-1.7.1.min.js")
@Scriptes.Render("~/Scripts/jquery.validate.min.js")
//..few more files
但我不希望每次都包含所有这些脚本,所以我决定自己创建一个包。我做的步骤是:
BundleConfig.cs
我有这个:public static void RegisterBundles(BundleCollection bundle)
{
//默认捆绑
bundles.Add(new ScriptBundle(“〜/ bundles / customval”)。包括(
"~/Scripts/jquery-1.7.1.min.js",
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.unobtrusive-ajax.min.js",
"~/Scripts/jquery.validate.unobtrusive.min.js"));
}
然后我检查我的Global.asax
我在哪里:
BundleConfig.RegisterBundles(BundleTable.Bundles);
然后在我看来我只是尝试:
@Scripts.Render("~/bundles/customval")
和FireBug
表示此页面没有加载JavaScript。
我使用自定义_Layout
页面,我想知道是否必须在那里添加内容。我补充说:
@RenderSection("scripts", required: false)
在我的_Layout
中,但它似乎没有解决问题。那么我错过了什么让我的捆绑工作?
答案 0 :(得分:4)
您可能正在以DEBUG
模式运行。在此模式下,.min.js
文件将被忽略(因为它们仅供生产使用)。
最好包含非缩小版(有时带有.debug.js
个版本的后缀),然后在RELEASE
模式下,优化框架会自动捆绑和缩小它(除非您另行指定)
答案 1 :(得分:1)
我不得不补充:
BundleTable.EnableOptimizations = false;
在RegisterBundles方法的末尾。在我的晚年:)我不记得究竟是什么问题,但它与.min文件和调试,如果内存为我服务。
@RenderSection(“scripts”,required:false)允许您在每个视图中定义一个特殊的脚本部分(在您的情况下是可选的),并在每个使用_layout的页面中将它呈现在相同的位置文件。