オプション 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に2つのクラスを追加します
<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"] がユーザー制御可能でないことを確認する必要があります。つまり、ユーザーはその値を指定できないということです。これにより、必要なものをそこに注入できるようになります。
ただし、2 番目のオプションはお勧めしません。なぜなら、すべてのリクエストに対してこれを呼び出すことになり、CSS を静的にできるときに CSS を生成し続けるのは得策ではないからです。オプション1を使用できる場合は、それがより良いと思います.