如何设置链接';s单击链接上的导航URL

本文关键字:链接 单击 URL 导航 何设置 设置 | 更新日期: 2023-09-27 18:22:17

我正在动态创建一个链接。链接的NavigateUrl属性是在对方法的调用中设置的。但我不想在点击链接之前调用该方法,因为这样的链接太多了。

如有任何帮助,我们将不胜感激。谢谢

public void CreateLink()
{
   LinkButton link = new LinkButton();
   link.Click += new EventHandler(link_Click);
   string key = GetKey();
}
private void link_Click(object sender, EventArgs e)
{
    var url = GetLinkUrl(e.???);
    Response.Redirect(url);       
}

public string GetLinkUrl(string key)
{
    //do things to retrieve url
    return url;
}

更新:非常感谢,所有:)我将使用LinkButton,如上面更新的代码所示。但我忘了问:每个链接都有一个密钥,需要它才能获得URL。如何进行

如何设置链接';s单击链接上的导航URL

您正在做的事情可能相当复杂;您需要向客户端输出一些内容,指示在导航发生之前要执行的对代码隐藏方法的调用,例如:

HyperLink link = new HyperLink();
link.Attributes.Add("onclick", "doClientsideCode();");
...

然后,一点JavaScript:

function doClientsideCode() {
    // Do a call to a service or similar, to run the method you're wanting to run.
    // This will then do the navigation you require.
}

因此,我的建议实际上是LinkButton;这将触发一个事件,您可以通过类似于的方式在服务器端捕获该事件

public void link_Click(object sender, EventArgs e) {
    // Run my method
    // Issue response.redirect to correct URL.
}

[编辑-在回答编辑后的问题时,当使用LinkButton时,您可以访问属性CommandName和CommandArgument,这应该符合您的要求。然而,我确实觉得这部分现在应该是一个单独的问题。]

一种选择是使用ASP按钮而不是超链接,并将GetLinkUrl函数绑定到按钮的单击处理程序中。然后运行Response.Redirect('yourURL')来执行链接。

编辑:正如Adrian上面所说,LinkButton将是两全其美的-它的风格类似于超链接,但您可以为它设置一个点击处理程序来动态获取URL,只有在实际点击按钮时才