如何识别使用asp.net C#点击的超链接的id?

时间:2015-06-20 20:30:00

标签: c# asp.net hyperlink click

我在webform中的无序列表中的列表元素中有三个超链接。我想要一个函数来处理超链接的所有点击。所以我需要确定在代码隐藏文件中单击的超链接的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
}

2 个答案:

答案 0 :(得分:1)

如果你不使用HyperLink(你可能不使用它,因为它们会触发到达TargetUrl而不是帖子)但是使用LinkBut​​ton你可以设置CommandArgument。在OnClick上,您可以读取CommandArgument并将其解析为int。

如果您的链接位于包含DataSource绑定的项目中,则可以执行以下操作:

<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

    }
}

答案 1 :(得分:0)

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

TheEventHandler(object sender, EventArgs e)

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

(sender as Control).ClientID会为您提供所点击项目的ClientID。

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