选项 1
与其更改 CSS 文件,不如根据会话应用不同的类。
.main
{
padding: 0px 12px;
margin: 0px 0px 0px 0px;
min-height: 630px;
width:auto;
}
.agency1 { background-image: url('agency1.png'); }
.agency2 { background-image: url('agency2.png'); }
.agency3 { background-image: url('agency3.png'); }
然后将两个类添加到您的 div
<div class="main <%=Session["agency"]%>"></div>
选项 2
创建一个呈现特定 CSS 的通用处理程序并将其添加到您的页面
<link href="GenerateCss.ashx" rel="stylesheet" />
在您的 GenerateCss.ashx.cs 文件中,您将拥有类似这样的内容
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string image = "main";
if (context.Session != null && context.Session["agency"] != null)
{
image = context.Session["agency"].ToString();
}
string result = ".main{padding: 0px 12px; margin: 0px 0px 0px 0px; min-height: 630px; width:auto; background-image:url('" + image + ".png');}";
context.Response.Write(result);
}
要非常小心,因为如果使用不当,这可能会使您遭受 XSS 攻击。 您需要确保 session["agency"] 不是用户可控制的。我的意思是用户不能提供该值,因为这将允许他们在那里注入任何他们想要的东西。
我不推荐第二个选项,因为您将为每个请求调用它,并且当您可以将其设为静态时继续生成 CSS 并不是一个好主意。如果您可以使用选项1,我会说它会更好。