【问题标题】:Is there a way to add an onclick event to an ASP.NET Label server control?有没有办法将 onclick 事件添加到 ASP.NET 标签服务器控件?
【发布时间】:2010-09-15 22:00:03
【问题描述】:

我想做这样的事情:

<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>

我知道在 Javascript 中我可以做到:

<span onclick="foo();">My Label</span>

所以我想知道为什么我不能用 Label 对象做到这一点。

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

    您可以使用属性添加 onclick 客户端回调。

    我不知道您可以在 span 标签上执行此操作,但如果可以,您可以通过 lblMyLabel.Attributes.Add("onclick", "foo();"); 添加“onclick”

    foo(); 需要是客户端 javascript 函数。

    System.Web.UI.WebControls.Label 没有 OnClick 服务器事件。如果您想使用上面的示例进行服务器回调,您可以考虑使用 AJAX。

    你也可以像其他人说的那样使用LinkButton。如果只是你关心的下划线,你可以使用 CSS 使它看起来不像一个链接。

    ASPX:

    <asp:LinkButton ID="LinkButton1" runat="server" 
        CssClass="imjusttext" OnClick="LinkButton1_Click">
    LinkButton
    </asp:LinkButton>
    

    CSS:

    a.imjusttext{ color: #000000; text-decoration: none; }
    a.imjusttext:hover { text-decoration: none; }
    

    【讨论】:

      【解决方案2】:

      您的问题没有说明您是要在服务器(VB 或 c#)还是客户端(javascript)上引发点击事件。如果您正在寻找服务器端事件,您应该使用链接按钮使链接显示为标签的 css。然后,您可以使用链接按钮的服务器端单击事件。如果您正在寻找客户端点击事件 - 只需将其输入到您的服务器控件标记中
      asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
      ASP.NET 将在生成的 html 标记中发出其他属性。

      【讨论】:

        【解决方案3】:

        您可以在 page_load 中的代码中执行此操作,例如:

        void Page_Load(object sender, EventArgs e) 
        {
              lblMyLabel.Attributes.Add("onclick",
                   "javascript:alert('ALERT ALERT!!!')");
        }
        

        【讨论】:

          【解决方案4】:

          如果你想要一个 onclick 事件,为什么不使用一个链接按钮,它有 onclientclick 事件:

          <asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>
          

          你可以使用 CSS 让链接看起来像你想要的任何东西

          【讨论】:

          • 我不想让它看起来像一个链接,也不想用 CSS 破解一个链接看起来像纯文本,但我想这就是我必须做的。 :( 不过谢谢。
          【解决方案5】:

          我认为你可以,但它是客户端的 onclick 处理程序,而不是服务器端。它会抱怨该属性不受支持(或某些此类),但我认为它可以正确呈现。如果你想要一个服务器端处理程序,我认为你需要做一个 LinkBut​​ton。

          【讨论】:

            【解决方案6】:

            据我所知,这是不可能的。标签控件发出&lt;span> 元素,该元素在服务器端是“不可点击的”。您需要将 Label 控件替换为 LinkBut​​ton。

            【讨论】:

              【解决方案7】:

              另一个技巧是使用 style="display:none;" 的隐藏链接或按钮并从 span 中的 javascript 函数触发对服务器控件的单击。

              类似这样的:

              <asp:linkbutton id="lblMyLink" onClick="lblMyLink_Click" runat="server" style="display:none;">My Link</asp:linkbutton>
              <span onclick="document.getElementById('lblMyLink').click();">My Label</span>
              

              【讨论】:

                【解决方案8】:

                您总是可以使用 .net 的标准回发 javascript 推出自己的控件来生成跨度,但如前所述,使用带有 CSS 类的链接标签会更容易

                【讨论】:

                  【解决方案9】:

                  只是在这个问题上插话, 我在 .aspx 页面中使用了一个标签,如果数据集中有子记录,该标签仅在我的 DataList 项模板中可见。

                  我给标签添加了一个onclick函数:

                  moreOptionsLabel.Attributes.Add("onclick", string.Format("toggle_visibility('{0}')", div.ClientID));

                  在我的 .cs 文件中。它现在将控制 .aspx 页面中的 div 标记来显示或隐藏记录 - 因为 onclick 指向客户端 JavaScript 函数。请注意 div.ClientID,这使得它可以在数据列表中使用。

                  如上所述 - span 标签确实可以通过“onclick”来发挥作用。并且由于标签控件在页面请求之后呈现为跨度,因此使用 Addtribute.Add("onclick".... 确实有效。

                  结果是无需回发即可显示/隐藏数据功能。如果您使用 LinkBut​​ton 或类似控件 - 回发和页面重新加载是不可避免的 - 除非您想了解一些 Ajax 内容。

                  注意:除非您使用下划线和手形光标对其进行样式设置,否则 span 标签看起来不可点击。

                  这个想法的功劳来自 Will Asrari,http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx

                  【讨论】:

                    【解决方案10】:

                    您需要创建一个继承自标签和 onclick 事件处理程序的类对象,这将是您自己的方法并将您的对象用作自定义标签。

                    【讨论】:

                      猜你喜欢
                      • 2012-06-09
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2010-10-09
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-12-17
                      相关资源
                      最近更新 更多