lASP.Net服务端控件是ASP.Net对HTML的封装,在C#代码中就可以用txt1.Text=‘abc’这种方式来修改input的值,ASP.Net会将服务端控件转成HTML代码输出给浏览器。服务端控件是ASP.Net非常吸引初学者、非常容易上手的东西,也是最被人诟病的东西。物尽其用,服务端控件在内网系统、互联网系统的后台部分等访问频率不高的地方用的还是很适合的。(互联网公司,产品型公司(OA))
l在服务端控件的标签中写的属性如果不是控件内置的属性就会被原样的输出到客户端
l所有的ASP.Net大部分都是从Control、WebControl类继承的,几乎都有的成员有:
•(1)ClientID,控件在客户端的Id,控件在服务端的Id不一定等于客户端HTML中的Id,比如说在ListView等控件的模板中。因此如果要在客户端通过JavaScript Dom、JQuery的getElementById、$(“#id”)来操作控件的话最好不要直接写服务端Id,而是$(‘#<%=txt1.ClientID%>’)。用JQuery事件设置鼠标移到控件上和从控件移开的不同样式。在用户控件中就可以看到ClientID和id的不同。UserControl、母版、ListView。推荐永远用ClientID
•(2)Visible 属性, 控件是否可见,如果Visible=False是不会转到HTML中的,这和在HTML中给元素style.display='none'效果是不一样的。
•(3)CssClass 属性,控件的样式名,就是HTML中控件的class属性。也可以单独修改BackColor、BorderStyle等属性,但是不建议这么做,因为会生成很多的内联样式,生成html尺寸大,不便于统一的修改。
•(4)Attributes,用来设置获取控件的额外属性。和Dom中的setAttribute()、getAttribute()是一样的。Button1.Attributes[“a1”] = “2.jpg”; HTML 事件在服务端看来也是属性 Button1.Attributes[“onmouseover”] = “alert(‘hello’)”;
l说明:所有的服务端控件不仅可以使用控件定义的属性,还可以使用额外的属性,这些属性包括控件没有封装的HTML属性(比如onmouseover等浏览器端事件页当作属性),ASP.Net会将它不识别的属性原封不动的渲染到客户端。在代码中也可以通过Attributes属性设置额外属性:CheckBox1.Attributes["onmouseover"] = "alert('hello')";
l1、Label控件。Text属性为显示文本。AssociatedControlID属性用来关联一个控件,如果为空的话会展示为一个<Span>,如果指定为一个控件的id,则会展示为一个HTML中的<Label>并且将for属性设置为被关联控件的ClientId。
l2、Literal控件也是展示一段文本,但是Literal控件不会渲染任何额外的标签,就是将Text属性的值展示出来而已。
l3、TextBox控件,文本框控件。TextMode属性取值SingleLine、MultiLine、Password,分别渲染为input(type=text)、textarea和input(type=password)。当AutoPostBack属性为true的时候,用户焦点离开TextBox就会造成页面Post,实现原理就是讲ASP.Net原理时的AutoPostBack。TextChanged事件(需要AutoPostBack=true才会修改后触发,否则是页面提交才触发),文本发生变化的时候事件触发。(以Post方式提交表单)ASP.Net中要提交表单的时候最好调用__doPostBack方法。
l4、RadioButton控件,对应为input(type=radio),通过GroupName属性进行分组
l5、Button控件。OnClientClick属性,当用户点击按钮的时候在浏览器端执行的代码,注意OnClientClick是字符串属性,写的代码是JavaScript代码,运行在浏览器端。<asp:Button ID="btnDel" runat="server" onclientclick="return confirm('真的要删除吗?')" Text="删除" />
l6、LinkButton,用法和Button差不多,区别就是Button控件渲染为按钮,而LinkButton渲染为超链接。不要用LinkButton来实现普通的超链接,因为LinkButton的href为一段javascript代码,进行的是表单的Post,无法“在新窗口中打开连接”。和讲“行删除”那个例子中href为javascript的超链接原理一样。一般用Button就行,只有用户要求“长成超链接好”采用LinkButton,就是一个在浏览器中渲染成超链接,服务端当成按钮用的东西。
lHyperLink:IsPostBack=False,没有提交表单内容,没有OnClick事件。
l7、ImageButton控件也和Button差不多,只不过是显示为图片,渲染为input(type=image)
l8、Button、LinkButton、ImageButton等控件都有CommandName、CommandArgument两个属性和Command事件,可以让多个按钮控件共享一个Command事件处理函数,通过读取事件对象e的CommandName、CommandArgument两个属性读取被点击按钮上设置的这两个参数来执行不同的操作。例子:编辑、删除多行数据。这种用法在ListView等控件中用的最多。
l9、Panel控件用来盛放一些控件。如果设定GroupingText属性那么就渲染为含有<fieldset>的div标签,也就是GroupBox效果,否则渲染为<div>
l10、HyperLink控件,超链接。和LinkButton不一样(常考),不会向服务器端Post,就是一个超链接。NavigateURL:链接地址;Text:显示文本。如果设定ImageUrl属性则会显示图片超链接。
l11、FileUpload控件,文件上传控件。渲染成input(type=file)。属性:FileContent以流形式获得上传的文件;FileName 上传文件名;HasFile Bool值,表示用户是否选择文件,SaveAs方法用于将文件保存到磁盘的指定位置。漏洞:文件上传漏洞(上传一个下载源代码的aspx、Process.Start启动格式化,创建管理员、开启远程桌面)。解决方法:只允许上传指定类型文件,上传文件夹不给执行权限。
lHTML控件,ASP.Net把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性、无法在服务器端进行处理。
lASP.Net服务端控件,经过ASP.Net高度封装的控件,使用简单,运行在服务器端,可以在服务端使用C#代码进行操作,会渲染到客户端为HTML控件。
lrunat=server的HTML控件。在HTML控件的基础上添加runat="server",也是运行在服务器端的,也可以服务端使用C#代码进行操作,也会渲染到客户端,不像ASP.Net服务端控件那样高度封装,暴露的属性大部分是普通HTML属性。和ASP.Net服务端控件相比的好处是:当需要在服务器端要对控件进行操作的时候,如果控件没有被ASP.Net服务端控件封装的时候,用runat=server的HTML控件很方便,runat=server的HTML控件也会对虚拟路径(~/)、id→ClientID进行处理,所以在使用虚拟路径、UserControl中也可能会用到οnmοuseοver="document.getElementById('<%=TextBox1.ClientID%>').value='哈哈';"
l直接在属性中有问题,会把<%直接输出到浏览器端,因此不要在控件的属性值中写<%%>。
lrun=server的html控件的好处,中庸!
l1、不像ASP.Net服务端控件那么重量级、封装的那么多,程序员可以比较好的控制生成内容的质量。更容易让美工来使用,因为美工不认得<asp:TextBox
l2、相对于html控件:

1)能够在服务端代码中操作控件

2)能够自动处理虚拟路径~

3)可以处理ClientID。

l选择的顺序:HTML→run=server的HTML→ASP.Net服务端控件

la→HtmlAnchor;form→HtmlForm;head→HtmlHead;input→HtmlInputButton、HtmlInputCheckBox 、HtmlInputText 等;meta→HtmlMeta;table→HtmlTable;tr→HtmlTableRow;td→HtmlTableCell;title→HtmlTitle。未单独封装的标签(比如div)或者自定义的标签(比如mmm)对应类型为HtmlGenericControl。使用Attributes属性操作未封装的属性。
l不用单独记忆,忘了的话,在aspx中弄一个标签试验一下就行。
l服务端HTML控件不像ASP.Net控件那样封装的高级,比如ASP.Net控件的BgColor属性为Color类型,而HTML控件的BgColor属性则为字符串类型,需要开发人员设置合法的值
l数据绑定分为数据源和数据绑定控件两部分,数据绑定控件通过数据源来获得数据,通过数据源来隔离数据提供者和数据使用者,数据绑定控件通过数据源来对数据进行修改,数据源有SqlDataSource、AccessDataSource、ObjectDataSource、LinqDataSource、EntityDataSource、XmlDataSource等(SiteMapDataSource是SiteMap专用数据源),由于大部分项目都不会页面直连数据库(因为违反最基本的分层原则),所以SqlDataSource、AccessDataSource不会使用,LinqDataSource、EntityDataSource也是只有在很极端的采用Linq、EF的项目中才会用,XmlDataSource是处理XML数据是才可能会用。ObjectDataSource是Web开发中应用最广的数据源,也能很容易的进行数据库切换。

数据绑定控件有列表数据绑定控件(DropDownList、RadioButtonList、ListBox、CheckBoxList、BulletedList等)和复杂控件(DataGrid、GridView、DetailsView、FormView、ListView、Repeater、DataList等,GridView等都是ListView子集)。复杂控件中DataGrid已经不推荐使用,Repeater是最轻量级的组件,在互联网的前台用的最多,ListView是GridView、DetailsView、FormView、Repeater、DataList等这些控件的大一统者,那些控件的优点ListView全都有,会了ListView那些控件也就会用了,因此数据绑定控件主要讲列表数据绑定控件、Repeater和ListView,项目中会用到FormView 、GridView

lObjectDataSource用来将一个类做为数据源,TypeName属性为数据源类的全名,有DeleteMethod(删除方法)、InsertMethod(新增方法)、SelectMethod(查询方法)、UpdateMethod(修改方法)等几个属性,分别为类中删除、插入、查询、更新数据的方法名,这些方法可能有参数,参数的值是通过DeleteParameters、UpdateParameters、InsertParameters等嵌套节点设置的。
lObjectDataSource访问自己写的普通类,在类上标注[DataObject] DataObjectMethod
l手工编写ObjectDataSource太麻烦,使用可视化界面来完成。将ObjectDataSource拖放到界面上,在右上角的智能标志上选择“配置数据源”即可进行配置。数据源类一般TypeNameAdapter类,选中类,选择【下一步】,分别选择对应的获得、删除、更新、插入数据的方法。
lDropDownList显示来自于ObjectDataSource的数据,选择数据源(DataSourceID属性)为刚才的ObjectDataSource,并且设定显示字段(DataTextField)和值字段(DataValueField)即可。RadioButtonList、ListBox、CheckBoxList、BulletedList等也都是这么用。
l手工设定绑定,除了可以给控件的DataSourceID属性设置一个数据源的方式进行数据绑定(推荐),还可以在代码中通过代码设置绑定(旧版本的ASP.Net只能这样绑定,新版本中不推荐)。
•用代码绑定可以将任何实现了IEnumerable接口的对象绑定到数据绑定控件。ListBox2.DataSource = new object[]{3,5,6};ListBox2.DataBind();
•由于数据绑定控件默认会将数据保存在ViewState中,因此不会每次刷新页面都会重新加载数据,只有第一次需要加载(!IsPostBack)
•由于代码绑定在禁用ViewState的情况下有很多麻烦事,因此推荐用DataSourceID的方式,控件会自己来判断是否应该重新取得数据。
lDropDownList原有“请选择性别”和数据绑定项的共存:AppendDataBoundItems=“true”,把数据绑定的项加到后面。

转载于:https://www.cnblogs.com/hsha/p/4709541.html

ASP.Net服务端基本控件介绍相关推荐

  1. ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类

    作者:Dflying Chen (http://dflying.cnblogs.com/) 本系列有三篇文章: ASP.NET Atlas简单控件介绍--Sys.Component基类与Sys.UI. ...

  2. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox

    作者:Dflying Chen (http://dflying.cnblogs.com/) 注:本系列文章比较基础,基本为Atlas官方文档的翻译,熟悉Atlas的朋友可以跳过. 本系列有三篇文章: ...

  3. 探讨ASP.NET2.0的Web控件改进之概述

    作者: 朱先忠编译 一. 引言 到目前为止,你可能已经了解了大量的ASP.NET 2.0新特征-母版页面,主题,提供者,等等--所有这样内容都相当精彩:但是,你是否了解到有关定制Web控件开发方面的重 ...

  4. operamasks-ui2.0 +MVC4.0+EF5.0实战之一 开篇及布局控件介绍

    两年前,曾打算自己开发一个web开发框架,把部门.人员.权限.日志作为基本服务加入进去,在其基础上可以做业务快速开发,结果没有坚持下去,仅仅开了个头就夭折了.究其原因,一方面是采用自己完全不熟悉的新技 ...

  5. DotNetTextBox V2.0 Web Control(ASP.NET2.0 增强型TextBox控件,完全支持AJAX.NET)

    [控件界面] [控件介绍] 名称:DotNetTextBox V2.0 Web Control 免费无限制版 类型:ASP.NET2.0 增强型TextBox控件 作者: 小宝.NET2.0 主页:h ...

  6. asp.net DataGridTree表格树控件 下拉树 DropTree c# .net

    1.下拉树 DropTree c# .net 下拉树实现原理 输出json到客户端 客户端实现动态加载 中间不会和服务端交互 数据量支持上 经测试 几千 还是很快的 本下拉树控件是用c#+js树实现 ...

  7. asp net夜话之八 数据绑定控件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 通过前面 ...

  8. Qt常用控件介绍(一)

    Qt常用控件介绍 Qt Creator 的使用技巧 Qt Creator的常用快捷键 按钮 QPushButton QToolButton QRadioButton QCheckBox QComman ...

  9. App控件定位:Android 控件介绍及元素定位方法

    本文将分享Android相关基础知识和Android APP控件定位工具的使用方法. 目录 Android基础知识 Android布局 Android四大组件 1.activity 2.Service ...

最新文章

  1. 通用异步 Windows Socket TCP 客户端组件的设计与实现
  2. 四、jquery中的事件与应用
  3. C语言实现方差variance计算(附完整源码)
  4. scala中akka actor例子
  5. 李开复:听AI大佬吐槽真实的人工智能
  6. SpringCloud与SpringConfig分布式配置中心
  7. 将samba加入到windows域《转载》
  8. 【转】oracle回闪操作
  9. Pytorch数据的读取与存储
  10. python 连接mysql视频教程_Python操作MySQL视频教程
  11. 64位java_java64位
  12. Python模块安装:Python3安装pdfminer3k
  13. 信息检索-矩阵理论与线性代数
  14. 计算机思维导图ppt模板,经典PPT模版(含各类思维导图).ppt
  15. html5互动,制作H5页面有哪些趣味互动功能?
  16. LTE学习:PHICH(二)
  17. vim最新版本安装 安装vim9
  18. 编译原理--语法分析:LR(1)
  19. 利open×××自带的http-proxy突破防火墙的封锁
  20. 分享一个运维监控大屏看板

热门文章

  1. 下载文件byte[]
  2. WinXP系统下安装SQL SERVER 2000
  3. Android中视图重绘的方法
  4. Jmeter plugins 之 Perfmon Metrics Collector(服务器性能监控)
  5. Struts2之文件上传(单文件/多文件)
  6. 关于http协议的理解
  7. [转载] 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
  8. php基础_变量和比较符
  9. 你真的了解分层架构吗?——写给被PetShop毒害的朋友们 (转)
  10. 智林STM32程序源代码的分析和整理03(转帖)