在 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】:

您可以在&lt;% if (false) %&gt; 中静态包含文件。

这样,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 标签,即&lt;head runat="server"&gt;。如果没有在head 标签上设置它,并且只在link 标签上设置,我实际上无法让它工作。

以上是关于在 asp.net 中包含 .css 文件的主要内容,如果未能解决你的问题,请参考以下文章

能够在 ASP.NET 中包含文件,但不检查它是不是存在

如何在 ASP.NET 中使用 log4net 在日志文件中包含 SessionID?

ASP.NET MVC:在 App_Code 中包含扩展方法的文件必须具有构建操作“无”吗?

如何使用 .Net 4.0 中包含的 HttpClient 类将文件上传到在 IIS Express 中运行的 Asp.Net MVC 4.0 操作

在 ASP.NET MVC Html.ActionLink 中包含锚标记

使用 ASP.NET Core 在 POST 请求的标头中包含身份验证