有没有办法将 onclick 事件添加到 ASP.NET 标签服务器控件



我想做这样的事情:

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

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

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

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

您可以使用属性添加 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; }

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

您可以在

page_load的代码中执行此操作,例如:

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

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

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

您可以使用CSS使链接看起来像您想要的任何

内容
我认为

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

据我所知,这是不可能的。标签控件发出<span>在服务器端"不可单击"的元素。您需要将标签控件替换为链接按钮。

另一个技巧是使用带有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>

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

只是为了解决这个问题,我在 .aspx 页中使用了一个标签,该标签仅在数据集中有子记录时在我的 DataList 项模板中可见。

我在标签中添加了一个点击功能:

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

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

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

结果是显示/隐藏数据的功能,而无需执行回发。如果你使用 LinkButton 或 simlar 控件 - 回发和页面重新加载是不可避免的 - 除非你想进入一些 Ajax 的东西。

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

这个想法的功劳来自威尔·阿斯拉里(Will Asarari)http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx

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

最新更新