【问题标题】:MVC4 bundling/minification with IE conditional comments带有 IE 条件注释的 MVC4 捆绑/缩小
【发布时间】:2012-10-03 16:11:37
【问题描述】:

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

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

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

编辑:
此外,如果能够在渲染输出中包含 <noscript> 标签(用于回退),那就太好了。

【问题讨论】:

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


    【解决方案1】:

    直到找到更好的方法,我做了一个适配器类,叫做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")
    

    如果有更好的方法,我将不胜感激。

    【讨论】:

    • 这种方法的缺点是,如果我有一堆需要“if lt IE 9”和“if lte IE 7”的样式或脚本,那么这些必须放入单独的包中,并单独呈现.
    • 也不确定在 &lt;noscript&gt; 标签中烘焙的优雅方式,通常用于 css 后备。
    • 我发现这个解决方案非常优雅
    【解决方案2】:

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

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

    "&lt;script src="{0}"&gt;&lt;/script&gt;"

    还有一个 RenderFormat 方法也接受标签格式。您应该能够使用这些更多地控制渲染。您尝试使用格式字符串执行的操作是否可行?

    【讨论】:

    • 不确定没有看到样本/签名,但不确定它是否可以与您的新更改一起使用,因为条件 cmets 位于脚本/样式标记之外。我在回答中描述的方式并不理想,但效果很好。
    • 另外,这只是个人喜好!我喜欢使用我的班级呼叫Bundles 而不是StylesScripts 的能力。它更加自给自足。不过,您描述的新方法听起来非常有用。
    • 基本上该格式将是我们用来生成单个脚本/链接标签的格式。所以你可以这样做:Scripts.RenderFormat("", paths)
    • 太棒了,这就是我们所需要的。期待发布。
    • 1.1-alpha1 现在在 nuget 上,所以你可以试试这个。 nuget.org/packages/Microsoft.AspNet.Web.Optimization
    【解决方案3】:

    我在这里找到了一个替代方案:https://coderwall.com/p/5zqvkg

    这是一个偏好问题

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

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

    )

    【讨论】:

    • 以上链接发布了一个在实践中不起作用的解决方案
    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 2023-03-03
    • 2012-01-29
    • 2013-02-01
    • 1970-01-01
    • 2013-09-11
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多