这些在 ASP.NET Web Forms 4.5 中引用捆绑 CSS 的方法有啥区别?

Posted

技术标签:

【中文标题】这些在 ASP.NET Web Forms 4.5 中引用捆绑 CSS 的方法有啥区别?【英文标题】:What's the difference between these approaches to reference bundled CSS in ASP.NET Web Forms 4.5?这些在 ASP.NET Web Forms 4.5 中引用捆绑 CSS 的方法有什么区别? 【发布时间】:2012-09-10 22:42:52 【问题描述】:

我使用 Visual Studio 2012 和内置模板(在 Add -> New Project 下)创建了一个面向 .NET Framework 4.5 的全新 ASP.NET Web Forms Web 应用程序项目。在默认提供的 Site.Master 页面中,我看到页面上有一些包含 CSS 的标记,如下所示:

<webopt:BundleReference runat="server" Path="~/Content/css" />

但是,我注意到我可以使用其他代码代替....

<%: Styles.Render("~/Content/css") %>

当我查看呈现的页面时,结果似乎是相同的。使用 webopt:BundleReference 和使用 Styles.Render 有什么区别?

其中一种方法比另一种更好吗?

【问题讨论】:

【参考方案1】:

&lt;%: Styles.Render %&gt; 语法适用于 ASP.NET MVC(它不能使用 ASP.NET 控件,因为它们没有真正的页面上下文可供使用)。 BundleReference 控件用于 WebForms。

ASP.NET MVC 可以使用 WebForms 作为视图引擎来替代 Razor(您会看到太多的“@”符号),这就是为什么会有一些交叉。

我想他们添加了控件是为了保持一致,而不是要求 WebForms 人员使用页面的渲染功能(&lt;% 标签)。

【讨论】:

有趣的是,默认情况下,母版页有一个用于某些 CSS 的 BundleReference,并为 Modernizr javascript 使用一个 Scripts.Render。似乎他们本可以保持一致并为两者使用相同的方法。就像对两者都使用 BundleReference 一样...... 您知道为什么默认情况下这两种方法都会在同一个母版页中使用吗?是否有一些暗示 css 文件应该使用 webopt:BundleReference 控件呈现,而 JS 文件应该使用 Scripts.Render 呈现? 我将此标记为答案,因为我相信它最接近解释为什么这两个选项存在,即使它们实现了相同的最终目标。虽然我仍然不清楚为什么 MS 会在同一个母版页中使用 both 方法....但我还没有看到该问题的任何答案。感谢您的回复。 @ClearCloud8 我认为&lt;%: Scripts.Render("") %&gt;&lt;asp:ScriptManager&gt;之间的区别在于Scripts.Render可以放在&lt;head&gt;里面,而ScriptManager只能放在&lt;form runat="server"&gt;里面,如果你使用html5shiv 然后Scripts.Render 是唯一的选择。【参考方案2】:

当我查看呈现的页面时,结果似乎是相同的 事物。使用 webopt:BundleReference 和有什么区别 使用 Styles.Render?

据了解,BundleReference 不仅用于包含脚本和样式引用,还用于将它们捆绑在一起以提高带宽效率。请参阅教程Bundling and Minification。我认为后者只是包含一个或多个符合 URL 模式的脚本的助手。

【讨论】:

感谢您的回复。然而,这两种方法似乎都在执行捆绑和缩小。 (我只是通过关闭 web.config 中的调试、运行和检查页面源来测试这一点。)所以......不幸的是,这些方法之间的区别对我来说仍然是一个谜......除非它实际上只是 WebForms 的替代方案人们按照戴的建议使用。 在进一步的测试中,我认为你是正确的。但是,我发现使用 &lt;webopt:BundleReference /&gt;&lt;%: Styles.Render() %&gt; 之间存在显着差异。您可以使用 Styles 辅助类指定一组样式引用,例如&lt;%: Styles.Render("~/Content/base/themes/css", "~/Content/css") %&gt;

以上是关于这些在 ASP.NET Web Forms 4.5 中引用捆绑 CSS 的方法有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 4.5 在 ASP.NET Core 2.0 应用程序下的 Azure Web App 中将 502.5 作为虚拟应用程序抛出

一个简单的ASP.NET Web Forms应用程序

Asp .Net web Forms 文件上传(无flash控制)

ASP.NET Web Forms – Button 控件简介

在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源

Azure ASP.NET Web Forms 能否用于构建 IoT 应用程序?