バックグラウンド
ネストされたマスター ページにいくつかの LinkButtons があります。これらはサブメニューであるため、ユーザーがボタンをクリックすると、ユーザーは特定のページにリダイレクトされます。各ボタンには、アイコンと特定のページの名前が表示されます。(例: プロジェクトの説明)
のマークアップはNestedMasterPage.master
次のようになります。
<asp:LinkButton ID="btnTest" CssClass="testButton" runat="server">
<div class="submenu-left"><img src="~/Images/test.png" runat="server" /></div>
<div class="submenu-right">Test</div>
</asp:LinkButton>
私がしたいこと
リンクボタンがクリックされたときに、クリックされたリンクボタンの背景色を変更して、ユーザーが現在どのページにいるのかがわかるようにしたいと考えています。
私がしたこと
NestedMasterPage.master.cs では、リンクボタンごとに、
public LinkButton BtnTest
{
get{ return btnTest; }
}
各 .aspx ページで、追加しました
<%@ MasterType VirtualPath="~/NestedMasterPage.master" %>
リダイレクトされたページが読み込まれると、このコードを追加して背景色を変更しました。
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Master.BtnTest.BackColor = System.Drawing.Color.Black;
}
これは背景色を変更します...しかし、私は問題を抱えています。
問題
私が抱えている問題は、リダイレクトされたページでポストバックが発生すると、ボタンのアイコンとページ名が失われ、色だけが保持されることです。
例えば
Click button2 redirects to page2, and the button2 has black backcolor:
+---------+ +---------+ +---------+
| button1 | | button2 | | button3 |
+---------+ +---------+ +---------+
white black white
After postback: The button loses the text (and icon)
+---------+ +---------+ +---------+
| button1 | | | | button3 |
+---------+ +---------+ +---------+
white black white
入れてみMaster.BtnTest.BackColor = System.Drawing.Color.Black;
ましif(!Page.IsPostBack)
たが、明らかに何もしませんでした。
色を変更するとこれが行われる理由がわかりません。ポストバックが発生するたびにボタン テキストを再レンダリングするのは適切な解決策とは言えません。マスター ファイルのコントロールへのアクセスに関する多くの記事を調べましたが、この種の問題に対処するものは何も見つかりませんでした。また、同様の問題を見つけるために何を探すべきかさえわかりません。どんな助けでも大歓迎です。