ASP.NET Button、ImageButton、LinkButton、HyperLink区别
ASP.NET Button、ImageButton、LinkButton、HyperLink区别
这4个控件都属于WEB服务器控件,有很多相同的属性和事件。其区别如下所示。
在*.aspx页面中插入Button控件如以下代码所示。
<asp:Button runat="server" ID="b1" Text="Button控件" />
在页面运行后,Button控件最终生成的HTML标签如以下代码所示。
<input type="submit" name="b1" id="b1"value="Button控件" />
即Button控件最终生成的是HTML表单控件中的提交按钮,其“name”属性和“id”属性为服务器控件中的“ID”属性值。
在*.aspx页面中插入ImageButton控件如以下代码所示。
<asp:ImageButton runat="server" ID="b2" ImageUrl="/img/uc1.gif" />
在页面运行后,ImageButton控件最终生成的HTML标签如以下代码所示。
<input type="image" name="b2" id="b2" src="/img/uc1.gif" />
类似于Button控件,ImageButton控件最终生成的也是HTML表单控件,只是类型为图像,其“src”属性值(图像链接路径)即为服务器控 件中的“ImageUrl”属性值。
在*.aspx页面中插入LinkButton控件如以下代码所示。
<asp:LinkButton runat="server" ID="b3" Text="LinkButton控件"></asp:LinkButton>
在页面运行后,LinkButton控件最终生成的HTML标签如以下代码所示。
<a id="b2" href="javascript:__doPostBack('b3','')">LinkButton控件</a>
和以上两个控件不同,LinkButton控件生成的HTML标签是超级链接,只是“href”属性指向一个浏览器端的javascript函数 (__doPostBack函数),并传递两个字符串参数。其中,第1个参数是该服务器控件的“ID”属性值,第2个参数则为可传递给服务器的事件参数。
说明:__doPostBack函数的第1个参数即为引发页面回传的控件ID,后面讲述回传机制时会详细分析。
在*.aspx页面中插入HyperLink控件如以下代码所示。
<asp:HyperLink runat="server" ID="b4" Text="HyperLink控件" NavigateUrl="~/Index.aspx"></asp:HyperLink>
在页面运行后,HyperLink控件最终生成的HTML标签如以下代码所示。
<a id="b4" href="http://sdrabbit.blog.163.com/blog/Index.aspx">HyperLink控件</a>
类似于LinkButton控件,HyperLink控件所生成的HTML标签是最常用的超级链接,其“href”属性即为服务器控件中的 “NavigateUrl”属性值,指向一个页面的URL。
【分析】
本题考查面试者对几个常用且字面上容易混淆的服务器控件的认识程度。解答中通过这些服务器控件实际生成的HTML代码进行区分.
Button控件使用非常 频繁,该控件用于提交表单数据。
ImageButton控件和Button控件基本相似,只是通过图像来表现外观.
和Button控件的Click事件不 同,ImageButton控件的Click事件是配合System.Web.UI.ImageClickEventHandler委托工作的。即 ImageButton控件的Click事件处理方法中使用的事件参数类型为System.Web.UI.ImageClickEventArgs,两个 参数X,Y可以获取用户单击的精确位置并做相应的处理。
LinkButton控件和HyperLink控件直接生成超级链接标签,从外观上来 看,LinkButton控件和HyperLink控件是一模一样的,因为它们生成的都是超级链接标签。
以上几个控件中,只有HyperLink控件不传 递数据给服务器,根据“NavigateUrl”属性直接跳转到指定页面。而其他三个控件都是通过表单将数据提交到服务器,LinkButton控件有点 特殊,该控件通过javascript函数的__doPostBack函数将数据赋值给表单的隐藏字段,然后提交回服务器。