2

背景

我在嵌套母版页中有一些链接按钮。它们是子菜单,因此当用户单击按钮时,它将用户重定向到特定页面。每个按钮显示一个图标和特定页面的名称。(例如项目描述)

中的标记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 回答