未呈现 MVC 4 中的自定义包
Posted
技术标签:
【中文标题】未呈现 MVC 4 中的自定义包【英文标题】:Custom bundle in MVC 4 is not rendered 【发布时间】:2013-12-22 05:50:13 【问题描述】:我正在处理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 bundles)
//默认捆绑包
bundles.Add(new ScriptBundle("~/bundles/customval").Include(
"~/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
中,但它似乎没有解决问题。那么我缺少什么来使我的捆绑包正常工作?
【问题讨论】:
【参考方案1】:您可能正在DEBUG
模式下运行。在此模式下,.min.js
文件将被忽略(因为它们仅用于生产用途)。
最好包含非缩小版(有时带有.debug.js
的后缀)版本,然后在RELEASE
模式下,优化框架将自动为您捆绑和缩小它(除非您另有指定)。
【讨论】:
【参考方案2】:我不得不补充:
BundleTable.EnableOptimizations = false;
在 RegisterBundles 方法的末尾。在我年老的时候 :) 我不记得到底是什么问题,但它与 .min 文件和调试有关,如果我没记错的话。
@RenderSection("scripts", required: false) 允许您在每个视图中定义一个特殊的脚本部分(在您的情况下是可选的),并将其呈现在使用 _layout 的每个页面的相同位置文件。
【讨论】:
以上是关于未呈现 MVC 4 中的自定义包的主要内容,如果未能解决你的问题,请参考以下文章
mvc(QSortFilterProxyModel)中的自定义排序仅适用一次
UINavigationController 的自定义动画推送未正确呈现导航栏
收到 Spring MVC AccessDeniedException 500 错误,而不是 @PreAuthorized 未授权请求的自定义 401 错误