mvc4捆绑强类型捆绑

时间:2012-06-19 16:00:16

标签: asp.net-mvc-4 strong-typing bundling-and-minification asp.net-optimization

所以MVC 4引入了脚本和样式捆绑。这允许这样做:

public static void RegisterBundles(BundleCollection bundles)
    {
    bundles.Add(new ScriptBundle("~/bundles/mobile").Include(
                    "~/Scripts/jquery.mobile-*"));

然后在剃刀视图中使用:

@Scripts.Render("~/bundles/mobile")

我的问题是为什么我要输入"~/bundles/mobile"?是否有办法让intellisence有一个强类型对象来接收?否则我必须去查找以确保我称之为同样的事情。

我想做这样的事情:(我知道这不会用这种方式编译,它只是一个例子)

public static void RegisterBundles(BundleCollection bundles)
    {
    Bundle mobile = new Bundle("mobile");
    mobile.AddFile("w/e")
    bundles.Add(mobile);

//in page:
 @Scripts.Render(BundleConfig.mobile)

或其他影响。

编辑:答案很简单。正如@Hao Kung指出@Styles.Render只需要一个url字符串路径。我创建了一个类来保持这些。

public class bundles
{
    #region Javascript
    public static string scripts = "~/bundles/scripts";
    ...
    #endregion

    #region CSS

    public static string css = "~/Content/css";
    public static string jqueryUi = "~/Content/themes/base/css";
    ...
    #endregion
}

在任何页面中,您只需执行

@Styles.Render(bundles.jqueryUi)

你有它。你需要付出一点额外的努力,但至少它现在是强力输入的。

1 个答案:

答案 0 :(得分:2)

渲染脚本/样式渲染助手不仅限于渲染对束的引用,它们可以解析任何URL,因此帮助程序检测到您要引用束的唯一方法是通过传入的虚拟路径束。