MVC4捆绑/缩小与IE条件注释

Bob*_*y B 13 asp.net-mvc conditional-comments asp.net-mvc-4 bundling-and-minification asp.net-optimization

我正在尝试使用MVC4的新"捆绑和缩小".

对于IE条件注释,我仍然采用旧方法:<!--[if lt IE 9]><link href=.../><![endif]-->或者<!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]-->我似乎没有得到自动调试/释放处理.

有没有内置的方法来做到这一点?其他人如何做到这一点?

编辑:
能够<noscript>在渲染输出中包含标签(用于回退)也很棒.

Bob*_*y B 15

在找到更好的方法之前,我创建了一个名为的适配器类Bundles,它具有以下方法:

public static IHtmlString RenderStylesIe(string ie, params string[] paths) {
  var tag = string.Format("<!--[if {0}]>{1}<![endif]-->", ie, Styles.Render(paths));
  return new MvcHtmlString(tag);
}
Run Code Online (Sandbox Code Playgroud)

脚本有类似的方法.视图将其称为:

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo")
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar")
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法,我会很感激这个建议.


Hao*_*ung 5

即将发布的1.1-alpha1更新将支持使用Scripts/Styles助手进行自己的标签格式化.

有一个新的DefaultTagFormat属性,默认情况下设置为:

"<script src="{0}"></script>"

还有一个RenderFormat方法,它也采用标记格式.您应该可以使用这些来控制渲染.你想用格式字符串做什么?

  • 1.1-alpha1现在是nuget,所以你可以试试这个.http://nuget.org/packages/Microsoft.AspNet.Web.Optimization (3认同)
  • 基本上,格式将是我们用于生成单个脚本/链接标记的格式.所以你可以这样做:Scripts.RenderFormat("<! - [if lte IE 7]> {0} <![endif] - >",path (2认同)