在 asp.net 中包含 .css 文件
Posted
技术标签:
【中文标题】在 asp.net 中包含 .css 文件【英文标题】:Include .css files in asp.net 【发布时间】:2011-03-19 07:47:52 【问题描述】:由于 virturl 目录名不固定,我在下面写了代码,现在将 .css 文件包含在 .aspx 页面中。
<link rel="Stylesheet" href="<%= ResolveUrl("~/Css/xxx.css") %>" type="text/css" />
问题是,当我在标签中使用“ResolveUrl”时,IDE 总是在抱怨所有 CSS 类都是未定义的。
有没有更好的方法来定义 .css 文件包括?
【问题讨论】:
【参考方案1】:IDE 不会知道您正在包含该 css 文件,因为它会在运行时生成,而不是在它之前生成。
如果您需要智能感应,请手动放置并稍后在需要时更改。
【讨论】:
【参考方案2】:您可以在<% if (false) %>
中静态包含文件。
这样,Visual Studio 的 IntelliSense 会看到文件,但 ASP.Net 运行时不会。
(并且if (false)
块应该被编译器优化掉,所以性能损失应该为零)
【讨论】:
你打字比我快!这是 IMO 的最佳解决方案。您可以按照现在的方式继续引用文件,然后使用物理路径复制所有引用,并将重复项包装在if(false)
【参考方案3】:
您可以使用 html 服务器控件(注意 runat="server"
)来执行此操作,如下所示:
<link rel="stylesheet" runat="server" media="screen" href="~/css/styles.css" />
这仍将为您解析虚拟目录。它还应该支持 css intellisense 和 aspx 页面上的警告。
【讨论】:
波浪号 (~) URL 语法需要 runat="server"。 如果在head
标签上设置了波浪号,则波浪号适用于没有runat="server"
的link
标签,即<head runat="server">
。如果没有在head
标签上设置它,并且只在link
标签上设置,我实际上无法让它工作。以上是关于在 asp.net 中包含 .css 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET 中使用 log4net 在日志文件中包含 SessionID?
ASP.NET MVC:在 App_Code 中包含扩展方法的文件必须具有构建操作“无”吗?
如何使用 .Net 4.0 中包含的 HttpClient 类将文件上传到在 IIS Express 中运行的 Asp.Net MVC 4.0 操作