我有一个具有链接按钮的用户控件。在链接按钮上单击,我将重定向到默认页面。默认页面使用此用户控件。如果访问,我试图将linkbutton的颜色设置为紫色。我认为这不起作用,因为正在发生的页面回发。以下是我的代码。
void LinkButton_Click(Object sender, EventArgs e)
{
Response.redirect("~/Default.aspx")
}
的CSS
.d:hover{
color:green;
}
.d:visited{
color:purple;
}
</style>
我不认为这是css问题,因为当我悬停时,颜色会变为绿色。访问过的链接颜色不会改变。是因为页面在链接按钮上再次呈现?我该如何解决这个问题?
答案 0 :(得分:2)
好的,这是一个非常有趣的问题,我应该说我已经找到了一个诀窍,这很可能在整个应用程序中使用它,所以这是我的解决方案:
您只能在链接按钮上使用相同的OnPreRender="LinkButtons_PreRender"
一次,然后在您的aspx上会有类似的内容:
<asp:LinkButton ID="LinkButton1" runat="server"
OnClick="LinkButton1_Click" OnPreRender="LinkButtons_PreRender">LinkButton</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server"
OnClick="LinkButton2_Click" OnPreRender="LinkButtons_PreRender">LinkButton</asp:LinkButton>
在您的代码中,您可以像下面的代码一样修复此问题:
protected void LinkButton1_Click(object sender, EventArgs e)
{
Session[((LinkButton)sender).ID + "visited"] = System.Drawing.Color.Purple;
// your code here
}
protected void LinkButton2_Click(object sender, EventArgs e)
{
Session[((LinkButton)sender).ID + "visited"] = System.Drawing.Color.Purple;
// your code here
}
protected void LinkButtons_PreRender(object sender, EventArgs e)
{
LinkButton lnkbtn = (LinkButton)sender;
lnkbtn.ForeColor = (System.Drawing.Color)(Session[lnkbtn.ID + "visited"] ?? System.Drawing.Color.Blue);
}
那就是它!结果如下:
(表现提示:当你不需要时,总是会杀掉会议)
答案 1 :(得分:0)
您需要使用超链接来实现此目的,因为链接按钮使用JavaScript发回或导航到其他页面。
它不使用HREF属性进行重定向。所以在这种情况下,访问过的css将无法按预期工作。
为此,您需要使用超链接或本机html anchor(a)标记。