如何识别使用 asp.net C# 单击的超链接的 ID

本文关键字:net 单击 asp 超链接 ID 何识别 识别 | 更新日期: 2023-09-27 17:57:12

我在网络表单的无序列表中的列表元素内有三个超链接。我想有一个函数来处理超链接的所有点击。所以我需要确定在代码隐藏文件中单击的超链接的 id,以便我能够使用 asp.net C# 正确处理单击响应。我想要一个函数来处理所有三个onclick事件。在该函数中,我想确定单击的超链接的 id 和 id 的基础,代码的相应部分将在代码隐藏文件中执行。

<ul>
    <li>
        <a id="A5" href="#"  onServerClick="Anchor_Click" runat="server">...</a>
    </li>
    <li>
        <a id="A6" href="#" onServerClick="Anchor_Click" runat="server">...</a>
    </li>
    <li>
        <a id="A7"  href="#" onServerClick="Anchor_Click" runat="server">...</a>
    </li>
</ul>

在代码隐藏文件中。

protected void Anchor_Click(Object sender, EventArgs e)
{
    if(id=="A5")
        some code
    else if(id=="A6")
        some code
    else if(id=="A7")
        some code
}

如何识别使用 asp.net C# 单击的超链接的 ID

如果你不使用超链接(你可能不使用超链接,因为这些会触发对 TargetUrl 而不是帖子的获取),而是使用 LinkButton,你可以设置 CommandArgument。在OnClick上,您可以读取CommandArgument并将其解析为int。

如果链接位于具有数据源绑定的项中,则可以执行以下操作:

<asp:LinkButton ID="someLink" runat="server" CommandArgument="<%# ((YourObjectType)Container.DataItem).Id %>" OnClick="SomeLinkClicked" />

如果链接位于页面本身中而没有绑定,则应在链接的代码隐藏中设置 commandArgument,该链接应可直接访问。

//Markup
<asp:LinkButton ID="someLink" runat="server" OnClick="SomeLinkClicked" />
//code-behind
someLink.CommandArgument = yourObject.Id

在 OnClick 中,您可以执行此操作以获取 id 并触发需要为此 id 执行的任何操作:

protected void SomeLinkClicked(object sender, CommandEventArgs args) {
    int id;
    if (int.TryParse(args.CommandArgument, out id)) {
        //Do something here with id
    }
}

所有 UI 元素事件处理程序都提供两个参数 ASP.NET:

TheEventHandler(object sender, EventArgs e)

发送方表示触发事件的元素。在您的情况下,它将是超链接。因此,将其转换为适当的类型(或者甚至只是执行 Control 以更通用,然后获取 ID):

(sender as Control).ClientID会给你所点击项目的客户端ID。

但是,这仅在元素runat="server"时才有效 如果这是一个真正的超链接,就像在常规的旧<a>标记中一样,则无法在服务器端捕获事件。