2015-06-20 36 views
0

我有三个超链接,每个列表元素都在webform的无序列表中。我想要一个单一的函数来处理所有的超链接点击。所以我需要确定在文件后面的代码中单击的超链接的ID,以便我能够使用asp.net C#正确处理点击响应。我想有一个功能可以处理所有三个onclick事件。在这个函数中,我想确定被点击的超链接的id和id的基础,代码的相应部分将在代码后面的文件中执行。如何识别使用asp.net C#单击的超链接的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 
} 
+0

难道这些超链接,如''标签或'的'? – dman2306

+0

这些是 s – abc

回答

0

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

TheEventHandler(object sender, EventArgs e)

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

(sender as Control).ClientID会给你点击的项目的ClientID。

然而,这仅作品如果元素是runat="server"如果这是一个真正的超级链接作为只是一个普通的老<a>标签,就没有办法捕捉到服务器端事件。

+0

它不起作用 – abc

0

如果您不使用HyperLink(您可能不使用HyperLink,因为这些触发器会触发TargetUrl而不是帖子),但使用LinkBut​​ton可以设置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 

    } 
}