【问题标题】:LinkButton color not changing [duplicate]LinkBut​​ton颜色不变[重复]
【发布时间】:2019-03-28 17:10:18
【问题描述】:

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

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

CSS

 .d:hover{
        color:green;
    }

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

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

【问题讨论】:

  • 我也是网络开发新手。但我认为你的权利,页面重新加载,所以访问链接的 CSS 不起作用。嗯,如果您研究过 cookie 和会话,如果单击链接,也许您可​​以将 cookie 保存为布尔值,然后为您的 css 操作该值。或者也许有一个比我试图建议的更简单的 CSS 解决方案。哈哈:P
  • @Niang 感谢您的回复。我认为有一种简单的css方法可以做到这一点。这就是我在这里的原因哈哈哈
  • 也许这个链接可以帮助你,see this。这是一个不同的例子,但你可以尝试解决这个问题。
  • @Niang 感谢您的链接。我想,我必须使用您提到的会话变量在服务器端执行此操作。

标签: c# css asp.net


【解决方案1】:

好的,这是一个非常有趣的问题,我应该说我找到了一个技巧,可以在整个应用程序中使用它,所以这是我的解决方案:

您只能在链接按钮上使用相同的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);
    }

就是这样!结果如下:

(性能提示:总是在不需要时终止会话)

【讨论】:

    【解决方案2】:

    您需要为此目的使用超链接,因为链接按钮使用 JavaScript 回传或导航到另一个页面。

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

    为此,您需要使用超链接或原生 html 锚(a)标签。

    【讨论】:

    • 感谢您的回复。但是,我必须使用链接按钮,因为我在链接按钮单击时设置会话变量。
    • @tranttrum ,您可以在超链接中使用查询字符串
    • 它必须是一个后值。所以,我不能使用查询字符串。不过感谢您的帮助。
    • 这可能很有用 - submit POST with a href
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多