さまざまな色のオプションを備えた一連のスタイルシートがあります。リンクボタンとして設定されたスタイルシート オプションのリストを含むユーザー コントロールを作成しました。クリックすると、使用するスタイルシートのパスを使用してセッション変数を設定し、マスター ページでこのセッションをチェックして、それに応じてスタイルシートを設定します。
問題は、ページを再度更新するまでスタイルシートの変更が有効にならないことです。スタイルシートを即座にリロードするにはどうすればよいですか?
ここに私のユーザーコントロールがあります:
<ul id="swatch">
<li>
<div class="green"></div>
<asp:LinkButton ID="lbGreen" runat="server" Text="Green" ClientIDMode="Static"
onclick="lbGreen_Click"></asp:LinkButton>
</li>
<li>
<div class="maroon"></div>
<asp:LinkButton ID="lbMaroon" runat="server" Text="Maroon" ClientIDMode="Static"
onclick="lbMaroon_Click"></asp:LinkButton>
</li>
<li>
<div class="silver"></div>
<asp:LinkButton ID="lbSilver" runat="server" Text="Silver" ClientIDMode="Static"
onclick="lbSilver_Click"></asp:LinkButton>
</li>
<li>
<div class="black"></div>
<asp:LinkButton ID="lbBlack" runat="server" Text="Black" ClientIDMode="Static"
onclick="lbBlack_Click"></asp:LinkButton>
</li>
</ul>
このコントロールのコード ビハインドは次のとおりです。
public partial class StylesheetPicker : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void lbGreen_Click(object sender, EventArgs e)
{
SetStylesheet("green");
}
protected void lbMaroon_Click(object sender, EventArgs e)
{
SetStylesheet("maroon");
}
protected void lbSilver_Click(object sender, EventArgs e)
{
SetStylesheet("silver");
}
protected void lbBlack_Click(object sender, EventArgs e)
{
SetStylesheet("black");
}
private void SetStylesheet(string selectedStyle)
{
switch (selectedStyle)
{
case "green":
Session["style"] = "/css/green.css";
break;
case "maroon":
Session["style"] = "/css/maroon.css";
break;
case "silver":
Session["style"] = "/css/silver.css";
break;
case "black":
Session["style"] = "/css/black.css";
break;
default:
Session["style"] = "/css/green.css";
break;
}
}
}
次に、マスター ページにあるコード スニペットを次に示します。
if(Session["style"] != null)
{
var stylesheet = Session["style"];
<link rel="stylesheet" type="text/css" href="@stylesheet" />
}
else
{
<link rel="stylesheet" type="text/css" href="/css/green.css" />
}
スタイルシートを変更するには、linkbuttonsを2 回クリックする必要があるようです。ボタンをクリックするとすぐに変化するようにするにはどうすればよいですか?
ありがとう