在ASP.NET下将服务器端变量/函数结果注入CSS的最佳方法?

时间:2012-03-19 23:40:04

标签: asp.net css

我的ASP.NET应用程序有一些服务器端方法,其结果我想注入我的CSS文件。例如,我不想将URL硬编码为徽标,而是想在CSS文件的中间插入对MyHelperClass.GetCurrentLogoUrl()的调用。

如果我正在编写ASPX页面,我可以在HTML标记的中间使用code render blocks x(即“<%= MyHelperClass.GetCurrentLogoUrl()%>”之类的内容)。为CSS做类似的事情会很好。

有一些CSS预处理框架,例如dotless,它们似乎有一些很酷的功能,但我不知道它们中的任何一个支持像这样调用C#。

4 个答案:

答案 0 :(得分:2)

在包含样式表时,您可以创建一个aspx页面并链接到它。你会错过css突出显示。

<link href="http://domain.com/css.aspx" type="text/css" rel="stylesheet">

这有可能产生不必要的开销,特别是如果您正在修改的大多数属性在运行时不会更改。在这种情况下,您可能希望研究TT files,它基本上在部署时生成其他文件 - 在您的情况下,您可以使用任何复杂的逻辑生成css。

答案 1 :(得分:1)

David P's answerASP.NET MVC URL auto-resolution in CSS files提出了一种方法。如果你给CSS文件添加.aspx扩展名,然后使用Page指令告诉ASP.NET它实际上是一个CSS文件,就像这样

<%@ Page Language="C#" ContentType="text/css" %>

然后你可以编写CSS,但也使用普通的ASP.NET代码渲染块。命名CSS文件.aspx感觉有点奇怪,但初步测试表明这可能有用。

更新:道具为o.v.比这说得更快。

答案 2 :(得分:0)

您可以在html中注入一个类名,例如:

<input type="text" id="myTextBox" cssClass="<%=myClassName%>" />

您还可以使用.attributes方法更改后面代码中的类名。

答案 3 :(得分:0)

将以下内容添加到您网页的<head></head>部分

<style runat="server" id="cssPhoneResize" type="text/css"></style>

然后从服务器端方法:

string logoUrl = "/images/logo2.jpg";
cssPhoneResize.InnerHtml += "#Image{-image: url(" + logoUrl + ");}";

希望这有帮助!