`

[转]变Asp.net控件之异同:HTML控件与Web服务器控件

    博客分类:
  • C++
 
阅读更多

 

Asp.net控件库十分强大,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等。这里主要介绍html控件、html服务器控件和web服务器控件的区别。

 

Asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等。这里我主要说说html控件、html服务器控件和web服务器控件的区别。

asp.net控件介绍

1html控件:就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过javascriptvbscript等程序语言来控制。

1.  < input type="button" id="btn" value="button"/>   

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

1.  < input id="Button" type="button" value="button" runat="server" />      

3web服务器控件:也称asp.net服务器控件,是Web Form编程的基本元素,也是asp.net所特有的。它会按照client的情况产生一个或者多个html控件,而不是直接描述html元素。如: 

1.  < 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服务器控件则是在服务器上,举例来说:

1.  < input id="Button4" type="button" value="button" runat="server"/>   


Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。

1.  < input id="Button4" type="button" value="button" runat="server" onserverclick="test" />    

我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。

1.  < asp:Button ID="Button2" runat="server" Text="Button" />   


Asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。

由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Asp.net服务器控件则是由页面把Form发回到服务器端,由服务器来处理。

下面我就结合我自己的测试来说明问题:

这段代码是我放在repeat中的模板里的:其中DeleteCheck是一个js脚本函数,注意是用于是否发送到服务器端的,这里就不展示脚本代码了。  

1.  < input runat="server" type="button" id="delete" value="Server button" />    

2.    < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    

3.    < input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />    

4.    < input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    

5.    < button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button    

6.    < asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" />   


展现出来的html代码如下: 

1.  < input name="Data$ctl03$delete" type="button" id="Data_ctl03_delete" value="Server button" />    

2.    < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    

3.   < input name="Data$ctl03$Button2" type="submit" id="Data_ctl03_Button2" onclick="return DeleteCheck(this)" value="Server submit" / >     

4.    < input ut type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    

5.    < button id="Data_ctl03_button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button   

6.   < input type="submit" name="Data$ctl03$button5" value="Asp:button" onclick="return DeleteCheck(this);" id="Data_ctl03_button5" />    

asp.net控件总结

可以看出以下几点:

1、当控件属性中有runat="server"时,生成的html控件时nameid发生的变化(.net Framework)
2
、当asp:button服务器按钮通过生成的页面后转化成类型为submit类型的Client控件。
3
、当控件是html控件时通过生成的页面和原来的html代码完全一样(理由上面已经说名)

另外我还测试了把这段代码直接放到form标记中(不放到其他子标记中):   

1.  < input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />    

2.  < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    

3.  < input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />    

4.  < input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    

5.  < button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button    

6.  < asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" OnClick="button5_Click" />    

7.  < asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"> 

直接放到form标记中生成的html代码 

1.  < script type="text/javascript">    

2.  < !--    

3.  var theForm = document.forms['form1'];    

4.  if (!theForm) {    

5.      theForm = document.form1;    

6.  }    

7.  function __doPostBack(eventTarget, eventArgument) {    

8.      if (!theForm.onsubmit || (theForm.onsubmit() != false)) {    

9.          theForm.__EVENTTARGET.value = eventTarget;    

10.        theForm.__EVENTARGUMENT.value = eventArgument;    

11.        theForm.submit();    

12.    }    

13.}    

14.// -->    

15.< /script>    

16.   < input language="javascript" onclick="__doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />    

17. 

18.< input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    

19.    < input name="Button2" type="submit" id="Button2" onclick="return DeleteCheck(this)" value="Server submit" />    

20.    < input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    

21.     < button id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button< /button>    

22.     < input type="submit" name="button5" value="Asp:button" onclick="return DeleteCheck(this);" id="button5" />    

23.     < a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton< /a>    


asp.net
控件总结二

这里也可以看出几点:

1
、当html服务器控件在服务器端添加了服务器事件后生成的代码变为:onclick="_doPostBack()",实际上是调用脚本把整个窗体提交到服务器(如果没有添件服务器事件,而只是添加了runat="server"是不会发送到服务器端的)这里注意如果要在html服务器控件中添加一个客户端事件如上面的 

1.  < input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />    

变成

1.  < input runat="server" type="button" id="delete" value="Server button" onclick="return DeleteCheck(this)" onserverclick="delete_ServerClick" />    

那样生成的html代码变成   

1.  < input language="javascript" onclick="return DeleteCheck(this)  __doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />    

提示有脚本错误原因是onclick事件执行了2个脚本且书写的格式不正确。  
onclick="return DeleteCheck(this)
_doPostBack()" 

这样的话就只能执行第一个函数而第二个函数就不能执行了(return).如果用 
onclick="return DeleteCheck(this)
_doPostback()" 
是指2个函数同时都要执行没有影响(相当于一条语句)

2、控件的名字没有发生变化,这个问题我也不太明白为什么不发生变化,请高手门指教哈

3asp:button中的onclientclick事件生成后就变成了onclick事件了,类型变成了type="submit".然而服务器事件的onclick我想是通过发送到服务器端执行的(具体我也不太很清楚)

4LinkButton不定义onclick事件,它会自动的生成下面代码发送到服务器端。
href="javascript:__doPostBack('LinkButton1',' ')" 

分享到:
评论

相关推荐

    面向开发人员之ASP.NET开发技术系列课程(2):JSP开发人员篇——ASP.NET与JAVA异同分析

    本课程是“面向开发人员之ASP.NET开发技术系列课程”的第二部分,专为已熟悉JSP的开发者设计,旨在深入探讨ASP.NET与JAVA之间的相似性和差异性,帮助开发者更好地理解和迁移技术栈。课程资料包括PPT、视频教程以及...

    ASP.NET 简明教程(VB)

    在VB.NET环境下,ASP.NET允许开发者使用熟悉的VB语法来编写服务器端代码,这些代码可以处理HTTP请求,动态生成HTML,与数据库交互,并实现复杂的业务逻辑。VB.NET是.NET Framework的一部分,提供了强大的面向对象...

    asp.net课件-适合教学

    13. **ASP.NET Core**:简述ASP.NET的新一代跨平台框架ASP.NET Core,其特性和优势,以及与传统ASP.NET的异同。 这些知识点构成了ASP.NET入门课程的核心内容,对于初学者来说,理解和掌握这些概念是至关重要的。...

    ASP.NET Web应用系统开发PPT.zip

    1. **Web Forms与MVC**:ASP.NET Web Forms是基于控件的开发模型,而MVC则是一种更为灵活的模式,强调分离关注点,适合大型项目。两者各有优势,学习者需要理解它们的工作原理和应用场景。 2. **.NET Framework与...

    ASP.NET复习材料

    ASP.NET 复习材料 一、类和结构 ASP.NET 中的类和结构是两个不同的概念。类是引用类型,结构是值类型。这意味着类是通过引用来访问的,而结构是通过值来访问的。在 C# 中,类是通过关键字 "class" 声明的,而结构...

    ASP .NET 技术内幕981-end.rar

    10. **部署与优化**:探讨如何在不同的服务器环境(如IIS)上部署ASP .NET应用,以及性能调优技巧,包括缓存策略、数据库优化和代码优化。 这些只是ASP .NET技术内幕中可能涵盖的部分内容,具体的书目如“bookinfo....

    ASP.NET实用教程

    在ASP.NET中,开发人员可以使用C#或VB.NET等编程语言,通过控件、事件驱动模型以及强大的服务器端功能来构建网页。ASP.NET的核心组件包括页面生命周期管理、状态管理、数据访问层、业务逻辑层和用户界面层。这些组件...

    ASP.NET项目实战 原代码

    1. **ASP.NET架构**:理解Web Forms和MVC两种模式的异同,以及何时选择哪种模式。 2. **控件和事件处理**:学习如何使用服务器控件,以及它们与客户端事件的交互。 3. **数据绑定**:掌握各种数据绑定技术,如...

    web课件ASP/asp.net/jsp程序设计

    而"08 ASP.NET服务器控件.ppt"则可能介绍ASP.NET中的服务器控件,如TextBox、Button、Label等,它们提供了丰富的交互功能和方便的数据绑定机制。 "11 ASP.NET综合应用实例.ppt"可能提供一些实际的项目案例,帮助...

    ASP.net手册适合新手

    2. **Web Forms**:ASP.NET的核心组件之一,通过服务器控件和事件驱动模型来模拟桌面应用程序的开发体验。新手会学习如何创建、布局控件,以及处理用户交互事件。 3. **MVC模式**:另一种在ASP.NET中构建Web应用的...

    ASP.NET3.5从入门到精通

    1.1.2 ASP.NET 与ASP 1.1.3 ASP.NET 开发工具 1.1.4 ASP.NET 客户端 1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) ...

    ASP.net 130道面试用题

    ASP.NET是微软公司推出的用于构建Web应用程序的框架,它基于.NET Framework,提供了丰富的功能和工具,使得开发人员能够高效地创建动态网站、Web应用程序和Web服务。本资源"ASP.net 130道面试用题"显然是为了帮助...

    ASP.NET 3.5 开发大全

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    ASP.NET3.5完全自学手册_编程技术文档2

    1. Web Forms:ASP.NET 3.5中的核心组件之一,它允许开发者使用服务器控件和事件驱动模型来构建用户界面,类似于桌面应用程序的开发体验。 2. ASP.NET MVC:一种轻量级的Web应用开发模式,结合了Model(模型)、...

    windows.forms to asp.net

    2. **控件差异**:WinForms和ASP.NET控件有显著差异,例如,WinForms控件直接与用户交互,而ASP.NET控件在服务器端运行,并通过HTTP协议与客户端交互。 3. **状态管理**:WinForms应用程序可以轻易保持状态,因为...

    非常适合入门(通俗讲解)asp.net

    此外,对于Java开发者,可能会对比Java Web开发和ASP.NET之间的异同,帮助他们更快地适应新的开发环境。 总之,这个ASP.NET入门教程集为初学者提供了全面的学习资源,涵盖了从基础概念到实际开发技能的多个方面,是...

    ASP.NET 3.5 开发大全word课件

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    ASP.NET工程师培训14

    3. **Web Forms**:Web Forms是ASP.NET的一个重要组成部分,它提供了一种声明式编程模型,使开发人员可以使用控件和事件驱动的方式来构建Web应用程序,类似于桌面应用程序的开发体验。 4. **MVC(Model-View-...

    ASP.NET 3.5 开发大全11-15

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

    ASP.NET 3.5 开发大全1-5

    1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...

Global site tag (gtag.js) - Google Analytics