Asp.net中LinkButton和HyperLink及超链接的区别和实战

一、实现机制不同
  用户单击控件时,HyperLink控件立即转向目标,表单不需回发postback到服务器端,而LinkButton需将表单发回给服务器,在服务器端处理页面跳转功能,将用户导航到目标URL。

二、使用方法不同
  HyperLink只需设置NavigateUrl就可以实现页面跳转, LinkButton控件实现页面跳转是在Click事件中使用Response.Redirect等方法实现的。
  用法上最大的區別是LinkButton有Click事件﹐而HyperLink沒有。

  其實說專業點﹕LinkButton支持回發﹐可以在鏈接到新頁面前﹐做一些其他處理﹐如檢驗輸入﹑重拼URL等。
  而HyperLink則更像一個超鏈接﹐不會回發﹐所以也就處理不了其他的事務。
  使用上﹐LinkButton的URL參數在PostBackUrl中指定﹐后者在NavigateUrl中指定。
  如果LinkButton不聲明Click事件﹐則通過返回到客戶端的代碼可以看到是超鏈接﹐不過鏈接中有JS代碼﹐是專門為回發而設。如果有PostBackUrl的情況下﹐聲明了Click事件也不會回發。如果要讓其產生回發﹐則不能在代碼中指定Url。
  而HyperLink完全就是一個鏈接。
  這兩個控件都是鏈接類型﹐URL參數是必要的。主要說在頁面設計代碼里的綁定方式吧。
  1)NavigateUrl='<%#"page.aspx?id="+Eval("id")%>' 這種方式就是拼接﹐因為URL是字符串﹐所有用几個加號就可以接上﹐方便﹐但可能不太安全。
  2)NavigateUrl= '<%#String.Format(page.aspx?id={0},Eval("id"))%> ' ,這種方式用標准的字符串格式化方法做﹐比較標准。是較好的風格。

三、优缺点比较
  HyperLink可以在运行时使用代码改变其属性,但是其本身不会触发任何事件,因此只能在其它事件中添加属性设置的代码。HyperLink可以显示图片,可以设置Target方式的属性,这些都是LinkButton不具备的。


四、选择
  如果在“到达”目标URL之前需要进行服务器端处理,则使用LinkButton控件;如果无需进行服务器端处理,则可以使用HyperLink控件。

五、实战

 1)我在网页中用了大量的LinkButton,
      <asp:LinkButton ID="lbtnBookName" runat="server" 
           CommandArgument='<%# Eval("BookID") %>' Font-Bold="True" ForeColor="#3399FF" 
           Text='<%# cusString(Eval("BookName").ToString(),0,34) %>' ToolTip='<%# Eval("BookName") %>' 
           CommandName="ShowBookDetails" oncommand="lbtnBookName_Command" 
           CausesValidation="False" Width="120px"></asp:LinkButton>

  点击该控件时,反应很慢,无法忍受。由于在转向新功能页面时不需要做其他操作,也就是不需要和服务器打交道,所以换成了HyperLink,去掉了LinkButton在.cs文件中的事件处理,感觉快了一些。

2)NavigateUrl的拼接一开始不熟练,把NavigateUrl='<%#"page.aspx?id="+Eval("id")%>' 写成了NavigateUrl="page.aspx?id="+'<%#Eval("id")%>' ,老出错。
3)后来,发现可以把HyperLink换成普通的超链接,何必用服务器控件呢?浪费资源
          <a href='<%#"User/BookDetails.aspx?bookID="+ Eval("BookID") %>' target="_self"><%# cusString(Eval("BookName").ToString(),0,30) %> </a>
4)ImageButton和linkButton性质用法一样,也被我换成了普通的超链接,
       <a href='<%#"User/BookDetails.aspx?bookID="+ Eval("BookID") %>' target="_self">
              <asp:Image ID="Image2" Height="80px" Width="60px"  ImageUrl='<%# Eval("BookPicture") %>' ToolTip='点击显示详情'  AlternateText='<%# Eval("BookName") %>' runat="server" />  
       </a>
5)ToolTip和AlternateText,你知道他们的区别么?留给读者吧。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值