查找链接的ID

时间:2013-09-24 13:44:57

标签: c# html asp.net

我已经动态地将链接添加到asp页面。点击后,我调用一个函数。我想找出调用该函数的链接的id。我添加了google.com和yahoo.com来解释我的需求。我希望函数在我原来的场景中从db中提取数据。

 <a href="#"  onServerClick="abc_Click" id="4"/>click</a>
 <a href="#" onServerClick="abc_Click" id="5"/>click here</a>

C#代码:

 protected void abc_Click()
 {
    if(id is 4) // don't know how to know the id of the link that calls the function. 
      Response.Redirect("http://www.google.com");
    else
      Response.Redirect("http://www.yahoo.com");
 }

我提到Call a C# function in ASP.NET when clicking on a HTML link

现在我有两个问题。

  1. 单击链接时不会调用该函数。
  2. 我不知道如何找到调用该函数的链接的id。

3 个答案:

答案 0 :(得分:2)

您错过了引用服务器端链接的重要属性:

runat="server"

它应该是这样的:

<a href="#" runat="server" onServerClick="abc_Click" id="4"/>click</a>
<a href="#" runat="server" onServerClick="abc_Click" id="5"/>click here</a>

顺便提一下,你是如何动态添加这些的呢?希望服务器端。因为如果它们是通过客户端上的JavaScript添加的,那么服务器将事件绑定到它们为时已晚。

还建议您不要创建这些链接,因为它们实际上并没有链接到任何内容。 (href="#"只是告诉它转到页面顶部。)因为这些应该发布到服务器以实现一些服务器端操作,所以它们最好作为按钮。 (顺便说一下,这会使你想要做的事情变得更容易。)如果UX需要,按钮的样式可以看起来像链接。

您的服务器端处理程序还需要其他参数:

protected void abc_Click(object sender, EventArgs e)

在这种情况下,sender将是被点击的元素。您可以将其强制转换为该元素的类型,并从中获取所需的所有信息,包括其.Id属性。

答案 1 :(得分:1)

将runat =“server”添加到您的html标记中,以使您的服务器上的元素可用。 否则它只是一个html元素,显然无法在服务器上访问...

<a href="#" runat="server" onServerClick="abc_Click" id="4" />

您还必须正确实现事件处理程序,因为您的实现缺少参数

答案 2 :(得分:1)

您错过了runat-server属性。如果包含此内容,则需要在表单中包含该链接。但是您无法将链接的ID传递给服务器(除非您首先使用JS修改隐藏字段,然后发布隐藏字段)。但是,对于一个相当简单的问题,这是一个非常复杂的解决方案。

最简单的方法是只添加一个查询字符串,然后在Page_Load中执行db调用。

示例:

<a href="/mypage.aspx?id=4" />click</a>
<a href="/mypage.aspx?id=5" />click here</a>

然后在代码隐藏中:

public void Page_Load(object sender, EventArgs e)
{
    if(Request.QueryString["id"] == "4")
    {
        Response.Redirect("http://www.google.com");
    }
    else
    {
        Response.Redirect("http://www.yahoo.com");
    }
}