使用控制器中的ASP.NET Javascript Bundles

时间:2012-11-09 11:15:03

标签: asp.net-mvc optimization asp.net-mvc-4 minify asp.net-optimization

我意识到这打破了MVC模式,但是在我正在构建的应用程序中以这种方式这样做是有可行的原因:)

我要做的是直接从Controller输出JavaScript包,而不是通过View链接。

所以例如我有一个名为“〜/ jQueryPlugin”的包,我想做的就是

return this.JavaScript(BundleTable.GetBundle("~jQueryPlugin").BundleContent)"

然而,对于我的生活,我无法弄清楚BundleTable.GetBundle("~jQueryPlugin").BundleContent部分应该是什么,以获得组合最小化束的字符串表示。

任何帮助将不胜感激·

1 个答案:

答案 0 :(得分:1)

在1.1-alpha1版本中,我们添加了一个新的Optimizer类,可以让您更轻松地执行此操作。它的目的是成为一个可以在ASP.NET托管中使用的独立类,因此设置它会略有不同。

您可以通过以下方式获取捆绑内容:

        OptimizationSettings config = new OptimizationSettings() {
            ApplicationPath = "<your physical path to the app>",
            BundleSetupMethod = (bundles) => {
                bundles.Add(new ScriptBundle("~/bundles/js").Include("~/scripts/jqueryPlugin.js"));
            }
        };

        BundleResponse response = Optimizer.BuildBundle("~/bundles/js", config);
        Assert.IsNotNull(response);
        Assert.AreEqual("<your bundle js contents>", response.Content);
        Assert.AreEqual(JsMinify.JsContentType, response.ContentType);

下一个版本应该更多地充实这个场景,因为构建时绑定与Visual Studio的集成需要它。