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



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

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

有没有内置的方法可以做到这一点?其他人是怎么做到的?

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

在我找到更好的方法之前,我做了一个名为 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.1-alpha1 更新将支持使用脚本/样式帮助程序进行自己的标记格式化。

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

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

还有一个RenderFormat方法,它也采用标签格式。 您应该能够使用这些来控制渲染。 您尝试在格式字符串中执行的操作是否可行?

我找到的另一种选择是:https://coderwall.com/p/5zqvkg

这是一个偏好问题

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

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

最新更新