【问题标题】:How to add style from code behind?如何从后面的代码中添加样式?
【发布时间】:2025-12-06 17:40:01
【问题描述】:

我想从后面的代码中为 HyperLink 控件添加样式 A:Hover

我可以这样做:

HyperLink hlRow = new HyperLink();
hlRow.Style.Add("color", "#000000");
hlRow.Style.Add("text-decoration", "none");

但是如何为超链接控件添加A:Hover 的样式? 我是否需要定义一个类并将该类与此控件相关联,如果是,如何?

【问题讨论】:

    标签: c# asp.net css hyperlink


    【解决方案1】:

    可以使用超链接的CssClass属性:

    LiteralControl ltr = new LiteralControl();
            ltr.Text = "<style type=\"text/css\" rel=\"stylesheet\">" +
                        @".d
                        {
                            background-color:Red;
                        }
                        .d:hover
                        {
                            background-color:Yellow;
                        }
                        </style>
                        ";
            this.Page.Header.Controls.Add(ltr);
            this.HyperLink1.CssClass = "d";
    

    【讨论】:

    • 谢谢。顺便说一句,我确实有 aspx 页面,我可以直接在那里编写 CSS 类,而不是使用 LiteralControl! :-)
    • 我很想给你投票,但出于某种疯狂的原因,我对“今天”的投票限制已达到(这不是我的今天,而是今天的美国),所以我不能。因此,我将留下此评论。也许当我的投票禁令解除时,我会记得这篇文章并回来投票:)
    • 绝妙的把戏。为了使其更具动态性,请将其放在方法下并用令牌和用户 String.Format 替换类名以动态填充它。
    【解决方案2】:

    使用

    HyperLink hlRow = new HyperLink();
    hlRow.Attributes.Add("Style", "color:#000000");
    

    【讨论】:

      【解决方案3】:

      试试这个:

      HTML 标记

      <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="#">HyperLink</asp:HyperLink>
      

      代码

      using System.Drawing;
      using System.Web.UI;
      using System.Web.UI.WebControls;
      
      protected void Page_Load(object sender, EventArgs e)
      {
          Style style = new Style();
          style.ForeColor = Color.Green;
          this.Page.Header.StyleSheet.CreateStyleRule(style, this, "#" + HyperLink1.ClientID + ":hover");
      }
      

      【讨论】:

        【解决方案4】:

        :hover 是一个选择器,而不是一个样式。您在示例中所做的是向元素添加内联样式,而与之等效的选择器显然没有多大意义。

        您可以在链接中添加一个类:hlRow.CssClass = 'abc'; 并这样定义你的类:

        a.abc:hover {
            ...
        }
        

        【讨论】:

        • Hover 是伪类,不是选择器;这是一个选择器:ul li a { ... }
        • 嗯,是的,part of a 选择器就是我要传达的意思:仍然从某种意义上说,尝试将其添加到元素没有意义,因为它是用于查找匹配的元素。但是,是的,谢谢你的评论
        • 大家好,我有一个后续问题,如果我在 aspx 代码中有一个菜单项,我想将 CSS 类分配给他。我怎样才能达到这个属性,它是一个 webcontrol 属性并且在 MenuItem 控件中丢失了?我正在尝试做一件简单的事情,即为“选定”模式创建样式……这样用户就会知道哪个页面是当前活动页面。有什么方法可以做到吗?
        【解决方案5】:

        还要确保 aspx 页面有 AutoEventWireup="true" 而不是 AutoEventWireup="false"

        【讨论】:

          【解决方案6】:

          如果没有文件可供下载,我需要禁用 asp:linkBut​​ton,将其更改为灰色并消除悬停时的下划线。这有效:

          .disabled {
              color: grey;
              text-decoration: none !important;
          }
          

          LinkButton button = item.FindControl("lnkFileDownload") as LinkButton;
          button.Enabled = false;
          button.CssClass = "disabled";
          

          【讨论】:

            【解决方案7】:

            你不能。

            所以不要像那样直接应用样式,而是应用一个类“foo”,然后在你的 CSS 规范中定义它:

            a.foo { color : orange; }
            a.foo:hover { font-weight : bold; }
            

            【讨论】:

              【解决方案8】:

              试试这个

               lblMsg.Text = @"Your search result for <b style=""color:green;"">" + txtCode.Text.Trim() + "</b> ";
              

              【讨论】:

              • 这与悬停无关。
              最近更新 更多