我在嵌套母版页中有一些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;
}
这确实会改变背景颜色......但我遇到了问题。
我遇到的问题是,当重定向页面发生回发时,按钮会丢失图标和页面名称,并且只保留颜色。
e.g。
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)
,但显然没有做任何事情。
我不明白为什么修改颜色会这样做。 每次回发发生时重新呈现按钮文本听起来不是正确的解决方案,我想知道这里到底发生了什么。 我看了很多关于访问Master文件中的控件的文章,但没有找到解决这类问题的任何内容,我甚至不知道应该找到类似的问题。 任何帮助表示赞赏。
答案 0 :(得分: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>
这样做很有效但我不确定这是否是正确的解决方案,我仍然不知道为什么会导致这样的问题..