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

时间:2012-10-12 19:39:01

标签: asp.net-mvc asp.net-mvc-4 conditional-comments asp.net-optimization bundling-and-minification

我正在尝试使用MVC4的新“捆绑和缩小”。

对于IE条件评论,我仍然采用旧方式:<!--[if lt IE 9]><link href=.../><![endif]--><!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]-->,但我似乎没有得到自动调试/发布处理。

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

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

3 个答案:

答案 0 :(得分: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);
}

脚本有类似的方法。一个视图称它们为:

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

如果有更好的方法,我会很感激你的建议。

答案 1 :(得分:5)

即将发布的1.1-alpha1更新将支持使用Scripts / Styles帮助程序进行自己的标记格式化。

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

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

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

答案 2 :(得分:-2)

我找到的替代方案是:https://coderwall.com/p/5zqvkg

这是一个偏好的问题

(仍然喜欢上面的代码 - 它更清晰,更容易阅读

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