LinkBut​​ton颜色不变

时间:2014-06-25 03:21:19

标签: c# css asp.net

我有一个具有链接按钮的用户控件。在链接按钮上单击,我将重定向到默认页面。默认页面使用此用户控件。如果访问,我试图将linkbutton的颜色设置为紫色。我认为这不起作用,因为正在发生的页面回发。以下是我的代码。

void LinkButton_Click(Object sender, EventArgs e) 
  {
     Response.redirect("~/Default.aspx")
  }

的CSS

 .d:hover{
        color:green;
    }

    .d:visited{
        color:purple;
    }
</style>

我不认为这是css问题,因为当我悬停时,颜色会变为绿色。访问过的链接颜色不会改变。是因为页面在链接按钮上再次呈现?我该如何解决这个问题?

2 个答案:

答案 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);
    }

那就是它!结果如下:

enter image description here

(表现提示:当你不需要时,总是会杀掉会议)

答案 1 :(得分:0)

您需要使用超链接来实现此目的,因为链接按钮使用JavaScript发回或导航到其他页面。

它不使用HREF属性进行重定向。所以在这种情况下,访问过的css将无法按预期工作。

为此,您需要使用超链接或本机html anchor(a)标记。