0

我已经将链接动态添加到一个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");
 }

单击 HTML 链接时,我提到了 Call a C# function in ASP.NET 。

现在我有两个问题。

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

3 回答 3

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="#"只是告诉它转到页面顶部。)因为这些据说是发布到服务器以执行一些服务器端操作,所以它们最好作为按钮。(顺便说一句,这将使您尝试做的事情变得更容易。)如果用户体验需要,可以将按钮设置为看起来像链接。

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

protected void abc_Click(object sender, EventArgs e)

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

于 2013-09-24T13:49:37.810 回答
1

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

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

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

于 2013-09-24T13:47:46.070 回答
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");
    }
}
于 2013-09-24T13:53:27.297 回答