查找链接的 ID

本文关键字:ID 链接 查找 | 更新日期: 2023-09-27 18:32:40

我已经动态地添加了指向asp页面的链接。单击时,我调用一个函数。我想找出调用该函数的链接的 id。我添加了 google.com 和 yahoo.com 来解释我的需求。我希望该函数在我所做的原始场景中从数据库中提取数据。

 <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");
 }

我在单击 HTML 链接时提到了 ASP.NET 中调用 C# 函数。

现在我有两个问题。

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

查找链接的 ID

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

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 属性。

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

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

例:

<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");
    }
}

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

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

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