我正在动态创建链接。链接的 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,如上面更新的代码所示。但是我忘了问:每个链接都有一个关联的 key ,需要它才能获取 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,这应该可以满足您的要求。但是,我确实觉得那部分现在应该是一个单独的问题。]
我是一名优秀的程序员,十分优秀!