服务器端控件同html控件的区别
●ASP。NET中共有几种类型的控件?
三种:1-asp.net控件(动态) 2-标准的html控件(静态) 3-标准的html控件加runat="server"属性(动态)
动态页面主要由这三种控件画出来。从数据库获取到数据后把数据绑定到这些控件上发给浏览器显示出来。把数据绑定到控件属性的时候有两个重要的方法
Eval("字段")
Bind("字段")
Eval("字段")方法只是把数据绑定到数据控件上,并不提供修改的操作。
Bind("字段")方法是把数据绑定到数据控件上,并提供修改的操作。
●ASP。NET中共有几种类型的控件?
两种:
1. 客户端控件,也就是我们在HTML中经常用到的
2. 服务端控件,例如: <asp:TextBox ID="txt" runat="server" />
客户端控件也可以转成服务端控件
<input type="text" id="txt" runat="server" />
他们的区别?
1.
编译 ASP.NET 应用程序时,具有 runat=server 属性的 HTML 服务器控件被编译为程序集。可想html控件在客户端也要在内存中生产一个dll,并加到dom模型中。这样js就能编辑它了。
2.
区别:服务器端控件都会有个runat="Server"属性,
这样才能够在后台对其进行设置修改,
也就是在cs代码里面能对其修改设置。
你做下测试 你放个HTML控件 在CS代码是引用不出控件名的
然后你个HTML控件加上runat="Server" 在CS代码就能引用该控件了
本质上ASP.NET 的服务器控件 解析后返回到前台还是HTML控件
你建个页面 放一个asp:textbox上去
然后运行页面,然后查看页面源文件
你会发现放上的服务器控件变成了HTML的inupt type="button"
至于你说的视图状态应该是说这个吧:
由于HTTP连接属于无状态的,每次页面请求都无法记录上次请求页面的信息。
那么要保存上次请求页面上控件的值,也就是页面刷新后,填写的值不变,比方在textbox填了个‘a’,页面刷新后还是'a',.NET框架为实现这种机制,于是就用到了viewstate视图状态来保存这些控件的值,
那么将所有控件的值存在什么地方呢?你可以运行你的程序,然后在页面中查看源文件,就可以看到一个input type="hidden" name="__VIEWSTATE"的标签,这个就是你所谓的”视图“,它是经过服务器序列化过的,然后服务器接收后会反序列化这些隐藏域的值然后又从新给这些控件赋值,从而页面刷新后还能记录上次请求时候的所有控件的值。服务器控件都会默认保存VIEWSTATE的 有个属性(EnableViewState)可以设置的, 设置为Flase就不保存了,页面刷新后,值也就没了,可以做个测试放个textbox设置为EnableViewState为false,然后输入个值,然后再用按钮去刷新页面,那么textbox会为空,因为没有视图状态记录到上次你输入的值。
3.
asp.net控件是服务端控件
响应服务端事件
HTML控件是客户端控件
响应客户端事件
如果你对服务端/客户端不明白的话先去了解一下
简单来说
HTML客户端的事件是不会提交给服务端的
比如说点击一个按钮 改变文字的颜色
只是针对用户机器本身的 不会发送数据包给远程的服务器
而asp.net按钮点击后
将会以post或者get形式发送给服务器
进行数据库操作等等 页面提交后将会刷新
但是ajax技术可以使客户端控件发送请求给webservice
具体的用法
如果强调客户端的 应用
用客户端控件更能使用户感觉到方便
不用刷新页面
而需要数据库等操作时 肯定要用服务端控件
但是没有绝对的
我现在做的项目就是两者结合用
4.
web服务器控件并非只是运行在服务器端这么简单,它是.NET中封装好的组件,每个控件都是一个对象,属于某个基类,有自己的属性,事件和方法.由在.net framework下执行.
而HTML只是普通的HTML标记,就算加上runat=server也没有服务端控件那么强大的方法,只是有简单的属性和事件而已.HTML控件有runat=server后在服务器端加载,可以通过服务器端操纵这个控件,比如赋value值.和真正的Web服务器控件还差的很远.充其量只能算是一行代码.
5.
设置为服务器控件可以通过页面.cs文件使用,它的值都可以在后台得到。
<input type="text" id="txt1" value="" runat="server" />
这样你在后台可以通过this.txt1.Value来获取到文本框中的值。
标准的服务器控件是<asp:TextBox runat="server" ID="TextBox1" ></TextBox>
它在后来的使用是this.TextBox1.Text而不是.Value
6.
因为服务器要用这些控件呀。
HTML控件是从HTML标记衍生来的,HTML控件的外形与HTML标记相似,不同之处在于:HTML标记只能在客户端浏览器中使用,服务器无法使用。
服务器通常要把控件中的数据或存于数据库中,或做些改变重新发回去等事情。 如果不设置为服务器控件,服务器就不能使用它。
7.
Asp.net之所以方便和强大,关键是它有一组强大的Asp.net服务器控件,在Asp.net中我们经常会遇到Html控件,Html服务器控件、Web控件和Asp.net服务器控件。
Html控件:就是我们传统所说的Html 超文本标记语言,这些Html控件在以往的静态网页或网页里即可满足我们的需求,Html控件并没有办法利用程序直接来控制它们的属性、使用方法和接收事件,我们必须另外学习其它如JavaScript 等程序语言才得以控制。如:<input id="Button1" type="button" value="button" />。
Html服务器控件:就是上面我们讲的Html控件的属性里加上runat="server"所构成的控件,至于Html控件和Html服务器控件之间的区别很明显,Html服务器控件是运行于服务器端,Html控件是运行于客户端。具体来说:当ASP.NET 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么Html控件就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果Html控件有设定runat="server" 属性,Page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将Html服务器控件的执行结果转换成Html标注,然后当成字符串流发送到客户端进行解释。如:<input id="Button1" type="button" value="button" runat=”server” />。
Asp.net服务器控件:也叫Web服务器控件,Asp页面中用来定义Web应用程序用户界面的组件,是Web Forms编程模型的基本元素,它会依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里的控件进行了简单的介绍,我们通常说的Web控件也就是指Asp.net服务器控件。
服务器端控件同html控件的区别的更多相关文章
- 隐藏和显示服务器端控件以及Html控件
隐藏和显示服务器端控件以及Html控件 /// <summary> /// 隐藏控件 /// </summary> /// <param name="contr ...
- ASP.NET--Web服务器端控件和Html控件
今天学习总结了一些相关概念和知识. 之前无论是做 单机的winform 还是 CS的winform 感觉,不到两年下来感觉还可以,虽然API有很多,但是还是比较熟悉基于WINDOWS消息机制的编程,但 ...
- Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)
PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...
- Html控件和Web控件(转)
作为一名ASP.NET的初学者,了解并且区别一些混淆概念是很必须的,今天这篇博文 就是主要向大家介绍一下Html控件和Web控件.在ASP.net中,用户界面控件主要就是 Html控件和Web控件,在 ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- DevExpress控件的GridControl控件小结
DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...
- 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件
目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET.BMap.NET.WindowsForm以及BMap.NET.WinformDemo. BMap.NET 对百度地 ...
- winfrom获取用户控件里的控件对象
如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...
- MFC编程入门之二十七(常用控件:图片控件PictureControl)
上一节讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是 ...
随机推荐
- centos7安装kubernetes 1.1
原文地址:http://foxhound.blog.51cto.com/1167932/1717105 前提:centos7 已经update yum update -y 一.创建yum源 maste ...
- swoole实现websocket推送
环境配置: swoole 1.9.3.centos6.5(虚拟机).PHP7.01 思路: ①通过server中的collections取出fd ②写一个admin. ...
- 一个用户管理的ci框架的小demo--转载
一个ci框架的小demo 最近在学习ci框架,作为一个初学者,在啃完一遍官方文档并也跟着官方文档的例程(新闻发布系统)做了一遍,决定在将之前练习PHP与MySQL数据库的用户管理系统再用ci框架实现一 ...
- 一)get started with the Quartz project
官网 http://www.quartz-scheduler.org/ 下载链接 http://www.terracotta.org/download/reflector.jsp?b=tcdistri ...
- mysql下的常见问题处理
1. ubuntu中启动mysql,提示mysql access denied for user root@localhost 错误. 是因为还没有给添加的root账户配置密码信息. (1)停止mys ...
- B-spline Curves 学习之B样条曲线性质(5)
B-spline Curves: Important Properties 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. ...
- 还原bak到localdb的问题:The logical database file cannot be found ldf
主要环境相关因素:win7,ms sql 2012,ms localdb,msms 2012. 步骤: 1,让DBA给一个bak文件到本地来做测试,DBA按自己的工作流程得到bak文件. 2,在msm ...
- [label][Node.js] Three content management systems base on Node.js
1. Keystonejs http://keystonejs.com/ 2. Apostrophe http://apostrophenow.org/
- [label][HTML5-APP]通过使用HTML5特性开发WebApp的Framework收集
1. jQuery mobile http://jquerymobile.com 2. Intel's App Framework http://app-framework-software.in ...
- 将图片流输出到界面mvc
System.Drawing.Image _CodeImage = _Code39.GetCodeImage(OrderNo, Code39.Code39Model.Code39Normal, tru ...