服务器端空间和html控件有哪些比较重大的区别啊

解决方案 »

  1.   

    服务器控件占服务器资源
    html控件占客户端资源
      

  2.   

    HTML 服务器控件
    默认情况下,ASP.NET 文件中的 HTML 元素作为文本进行处理,并且不能在服务器端代码中引用这些元素。若要使这些元素能以编程方式进行访问,可以通过添加 runat="server" 属性表明应将 HTML 元素作为服务器控件进行处理。还可以设置元素的 id 属性,使您可以通过编程方式引用控件。然后可以通过设置属性 (Attribute) 来声明服务器控件实例上的属性 (Property) 参数和事件绑定。
    注意: HTML 服务器控件必须驻留在具有 runat="server" 属性的包含 form 标记中。
       1、html控件:就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过javascript和vbscript等程序语言来控制。如:<input type="button" id="btn" value="button"/>
    2、html服务器控件:其实就是html控件的基础上加上runat="server"所构成的控件。它们的注意区别是运行方式不同,html控件运行在客户端,而html服务器控件是运行在服务器端的。参考其他资料是这样说的:当ASP.NET网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html标注就会被视为符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释。如果Html标注有设定runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释。如:<input id="Button" type="button" value="button" runat="server" />
    3、web服务器控件:也称asp.net服务器控件,是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html控件,而不是直接描述html元素。如: <asp:Button ID="Button2" runat="server" Text="Button"/>那么它和html服务器控件有什么区别呢?参照其他网页的资料看法如下:     1)、Asp.net服务器控件提供更加统一的编程接口,如每个Asp.net服务器控件都有Text属性。    2)、隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。    3)、Asp.net服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。    4)、事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Asp.net服务器控件则是在服务器上,举例来说:    <input id="Button4" type="button" value="button" runat="server"/>是Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。    <input id="Button4" type="button" value="button" runat="server" onserverclick="test" />我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。    <asp:Button ID="Button2" runat="server" Text="Button" />是Asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。    由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Asp.net服务器控件则是由页面把Form发回到服务器端,由服务器来处理。
    asp.net什么时候用服务器控件,什么时候用html控件? 服务器控件服务器端运行,和服务器有交互数据的时候比较好用。html控件客户端运行,客户端判断客户行为时候好用。根据不同需求用的不一样。html控件是在客户端运行的,Web控件是在服务器端运行后返回给客户端的。asp.net控件是服务端控件,响应服务端事件。HTML控件是客户端控件,响应客户端事件。简单来说, HTML客户端的事件是不会提交给服务端的,比如说点击一个按钮改变文字的颜色,只是针对用户机器本身的,不会发送数据包给远程的服务器。而asp.net按钮点击后,将会以post或者get形式发送给服务器,进行数据库操作等等,页面提交后将会刷新。但是ajax技术可以使客户端控件发送请求给webservice。具体的用法,如果强调客户端的应用,用客户端控件更能使用户感觉到方便,不用刷新页面。而需要数据库等操作时肯定要用服务端控件。但是没有绝对的,做的项目就是两者结合用,不能一味用服务器端控件,会加重服务器负担的。
      

  3.   

      1,runat属性     这个属性决定着一段标记文本在显示时是逐字发送出去,还是转换成某个.net类的一个状态实例。在后一种情况下,该类本身负责发送相关的标记。在一个asp.net页面中,所有把runat属性设置为server的标志元素都被认为是服务器端控件。控件类提供方法和属性,允许我们对组件的状态进行配置。   2,Asp.Net服务器控件     asp.net服务器控件基本上有两个系列,分别是html服务器控件和web服务器控件。 System.Web.UI.HtmlControls是HTML服务器控件的命名空间,System.Web.UI.WebControls是Web服务器控件的命名空间。1.HTML服务器控件    html服务器控件是一些类,它们分别表示大多数浏览器支持的标准HTML标签。一个HTML服务器控件的属性集,与对应标签的常用属性集匹配。控件具有InnerText\InnerHtml\Style和Value等属性,一级Attributes等集合特征。每次在页面来源中发现标记了runat="server"的HTML标签时,ASP.NET运行库就会自动地创建对应的HTML服务器控件的实例。     现有的HTML服务器空间集并没有涵盖任一给定版本的HTML模式所有可能的HTML标签。只有最常用的标签才进入System.Web.UI.HtmlControls命名空间。<iframe>、<frameset>、<body>、<hn>等标签,一级<fieldset>、<marquee>和<pre>等最不常用的标签,都被省去了。    然而,对于在服务器上使用和配置的那些标签,缺乏一种专用的服务器控件并不会限制你的编程能力。我们只需要使用一个更一般的编程接口---HtmlGenericControl类。   2.Web服务器控件    Web服务器控件比HTML服务器控件具有更多特征。Web服务器控件不仅包括按钮和文本框等输入控件,而且还包括专用控件,例如日历、下拉列表、TreeView和DataGrid。Web服务器控件还包括一些非常像HTML服务器控件的组件。但是Web服务器控件比对应的HTML服务器控件更抽象,因为他们的对象模型不一定反应HTML语法。例如,让我们比较一下HTMl服务器控件和Web服务器TextBox控件。
        Html服务器文本控件具有如下标记:
        
        <input runat="server" id="firsName" type="text" value="dino" />    Web服务器TextBox控件具有如下标记:
       
        <asp:textbox runat="server" id="firstName" text="dino" />    这两个控件都生成相同的HTML标记代码。然而,HTML服务器文本控件的编程接口非常接近HTMl<input>标签的编程接口,而Web服务器TextBox控件的方法和属性以一种更抽象的方式进行命名。例如,为了设置HTMl服务器文本框的内容,必须使用Value属性,因为Value是对应的HTMl属性名。如果使用Web服务器TextBox控件,则必须设置Text属性。用HTML服务器控件还是使用Web服务器控件来表示HTML元素,只是个人爱好问题一级开发和维护的容易性问题,几乎无一例外。
      

  4.   

    服务器端控件最后还是会给编译成 标准的HTML控件的。