我在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
}
答案 0 :(得分:1)
如果你不使用HyperLink(你可能不使用它,因为它们会触发到达TargetUrl而不是帖子)但是使用LinkButton你可以设置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>
标记一样,则无法捕获服务器端的事件。