代码改变世界

LinkButton与HyperLink的小结

2010-05-30 16:18  Johnny Qian  阅读(674)  评论(0)    收藏  举报

最近项目中用到了Linkbutton,说实话以前不怎么用这个控件,一般都是用HyperLink。

现在才发现LinkButton与HyperLink有很大的差别。

用法上最大的区別是LinkButton有Click事件,支持回发﹐而HyperLink沒有。

LinkButton可以在链接到新页面前﹐做一些其他处理﹐如拼写URL。

而HyperLink像一个超链接,不会回发,和手写Html中的A标签没啥两样。

使用上﹐前者URL参数在PostBackUrl中指定﹐后者在NavigateUrl中指定。

如果LinkButton不声明Click事件﹐通过客户端的代码可以看到是生成了是超链接﹐不过链接中有JS代码﹐是专门为回发而设置的。

如果有PostBackUrl的情況下,在声明了Click事件后则不会回发。要让其linkButton产生回发,则不能在代码中指定Url.

下面是linkbutton回发时传参的代码:

前台代码:

<asp:LinkButton ID="lbt_Del" CausesValidation="False" CommandName="Del"
OnClick
="lbt_Del_Click" CommandArgument='<%# Eval("ID") %>'  runat="server">删除</asp:LinkButton>

后台代码:

protected void lbt_Del_Click(object sender, EventArgs e)
{
    string id = ((LinkButton)sender).CommandArgument;

   .....
}