Asp.Net 之 服务器端控件与客户端控件的区别

  服务器控件,即Asp.Net的控件,控制这些控件必须经过服务器处理,然后响应用户,代码在服务器端解释执行,生成根据用户的浏览器而定的html元素。

  客户端控件,即普通Html控件,使用script控制操作,由客户端浏览器解释执行。

  服务器控件需要回发执行,当首次打开页面时,需初始化。由runat属性指示的,runat的值有且仅为一值"server"。通过添加runat属性,一般的HTML控件可以被很方便地转换到服务器端运行,下面是一个简单的例子:<input type="text" id="txtLastName" size="40" runat="server"/>

  可以通过id属性中指定的名字,我们可以引用程序中的控件,可以通过编程的方式(在后台代码中)设置属性和获取值。因此,服务器端处理方式有较大的灵活性。

  但是,这种灵活性是有一定代价的。每种服务器端控件都会消耗服务器上的资源。另外,除非控件、网页或应用程序明确地禁止view state,控件的状态时包含在view state的隐藏域中,并在每次回送中都会被传递,这回引起严重的性能下降。

  客户端服务器控件:其实就是html控件的基础上加上runat="server"所构成的控件。它们的注意区别是运行方式不同,html控件运行在客户端,而html服务器控件是运行在服务器端的。参考资料:当ASP.NET网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释。如果Html标注有设定runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释。

  服务端服务器控件:是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html控件,而不是直接描述html元素。Asp.net服务器控件提供更加统一的编程接口,隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备,Asp.net服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存,事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Asp.net服务器控件则是在服务器上。

  两种控件最直观的区别在于,当网页打开后,其中的按钮点击后可以跳出对话框,在这时候断网,如果是客户端控件,可以正常跳出对话框,如果是服务器控件,则显示页面无法显示 。

  最大的区别就是客户端控件只是在客户端做处理,比如判断 你的输入是否合法之类。而服务器控件则相反。就是在服务器做处理.

上一篇:Webform——服务器控件与客户端控件


下一篇:由Asp.Net客户端控件生成的服务器端控件