2

バックグラウンド

ネストされたマスター ページにいくつかの LinkBut​​tons があります。これらはサブメニューであるため、ユーザーがボタンをクリックすると、ユーザーは特定のページにリダイレクトされます。各ボタンには、アイコンと特定のページの名前が表示されます。(例: プロジェクトの説明)

のマークアップは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)たが、明らかに何もしませんでした。

色を変更するとこれが行われる理由がわかりません。ポストバックが発生するたびにボタン テキストを再レンダリングするのは適切な解決策とは言えません。マスター ファイルのコントロールへのアクセスに関する多くの記事を調べましたが、この種の問題に対処するものは何も見つかりませんでした。また、同様の問題を見つけるために何を探すべきかさえわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

0

理由はわかりませんが<div>、テキストとアイコンが消える原因のようです。

<asp:LinkButton ID="btnTest" CssClass="testButton" runat="server" >
    <img src="~/Images/testIcon.png" class="submenu-left" runat="server" />
    <p class="submenu-right">Test</p>
</asp:LinkButton> 

これはうまくいきますが、これが正しい解決策であるかどうかはわかりません.なぜこのような問題が発生するのかはまだわかりません..

于 2013-09-27T23:29:11.360 に答える