这些在 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】:<%: Styles.Render %>
语法适用于 ASP.NET MVC(它不能使用 ASP.NET 控件,因为它们没有真正的页面上下文可供使用)。 BundleReference
控件用于 WebForms。
ASP.NET MVC 可以使用 WebForms 作为视图引擎来替代 Razor(您会看到太多的“@”符号),这就是为什么会有一些交叉。
我想他们添加了控件是为了保持一致,而不是要求 WebForms 人员使用页面的渲染功能(<%
标签)。
【讨论】:
有趣的是,默认情况下,母版页有一个用于某些 CSS 的 BundleReference,并为 Modernizr javascript 使用一个 Scripts.Render。似乎他们本可以保持一致并为两者使用相同的方法。就像对两者都使用 BundleReference 一样...... 您知道为什么默认情况下这两种方法都会在同一个母版页中使用吗?是否有一些暗示 css 文件应该使用 webopt:BundleReference 控件呈现,而 JS 文件应该使用 Scripts.Render 呈现? 我将此标记为答案,因为我相信它最接近解释为什么这两个选项存在,即使它们实现了相同的最终目标。虽然我仍然不清楚为什么 MS 会在同一个母版页中使用 both 方法....但我还没有看到该问题的任何答案。感谢您的回复。 @ClearCloud8 我认为<%: Scripts.Render("") %>
和<asp:ScriptManager>
之间的区别在于Scripts.Render
可以放在<head>
里面,而ScriptManager
只能放在<form runat="server">
里面,如果你使用html5shiv 然后Scripts.Render
是唯一的选择。【参考方案2】:
当我查看呈现的页面时,结果似乎是相同的 事物。使用 webopt:BundleReference 和有什么区别 使用 Styles.Render?
据了解,BundleReference 不仅用于包含脚本和样式引用,还用于将它们捆绑在一起以提高带宽效率。请参阅教程Bundling and Minification。我认为后者只是包含一个或多个符合 URL 模式的脚本的助手。
【讨论】:
感谢您的回复。然而,这两种方法似乎都在执行捆绑和缩小。 (我只是通过关闭 web.config 中的调试、运行和检查页面源来测试这一点。)所以......不幸的是,这些方法之间的区别对我来说仍然是一个谜......除非它实际上只是 WebForms 的替代方案人们按照戴的建议使用。 在进一步的测试中,我认为你是正确的。但是,我发现使用<webopt:BundleReference />
和 <%: Styles.Render() %>
之间存在显着差异。您可以使用 Styles 辅助类指定一组样式引用,例如<%: Styles.Render("~/Content/base/themes/css", "~/Content/css") %>
以上是关于这些在 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 文件上传(无flash控制)
ASP.NET Web Forms – Button 控件简介
在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源