未呈现 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 中的自定义包的主要内容,如果未能解决你的问题,请参考以下文章

框架中的自定义 ui 组件未呈现到故事板

mvc(QSortFilterProxyModel)中的自定义排序仅适用一次

UINavigationController 的自定义动画推送未正确呈现导航栏

ExtJS 4(MVC)商店不使用我的自定义模型类

收到 Spring MVC AccessDeniedException 500 错误,而不是 @PreAuthorized 未授权请求的自定义 401 错误

asp.net MVC3 上的自定义错误页面