ASP.NET 服务器控件

ASP.NET 服务器控件 是ASP.NET对HTML控件的封装

共有的属性;ClientID:控件在客户端的ID    visible:控件是否可用    CssClass:控件的样式名    Attributes:用来设置获取控件的额外属性     ASP.Net会将服务端控件转成HTML代码输出给浏览器

1.Literal控件: 也是展示一段文本,但是Literal控件不会渲染任何额外的标签,        就是将Text属性的值展示出来而已。 2.Label标签:Text属性为显示文本,AssociatedControlOD属性用来关联一个控件        如果为空的话,会展示为一个<span>标签,如果指定为一个控件id,        则会展示为一个HTML中的<Label>并将for属性设置为被关联        控件的ClientID. 3.TextBox :  文本框控件,TextMode属性取值SingleLine、MultiLine、Password,        分别渲染为input(type=text)、textarea和input(type=password)。        当AutoPostBack属性为true的时候,用户焦点离开TextBox就会造成页面提交               实现原理就是讲ASP.Net原理时的AutoPostBack。        TextChanged事件(需要AutoPostBack=true才会修改后触发,否则是页面提交才触发),文本发生变化的时候事件触发。        ASP.Net中要提交表单的时候最好调用__doPostBack方法。        含有TextChanged()方法. 使用的时候必须设置AutoPostBack=true,        作用是自动提交Page页面,会在PageLoad事件之后执行. 4.RadioButton控件 :        对应为input(type=radio),通过GroupName属性进行分组

ASP.Net服务端基本控件 Button:

  1、Button控件。OnClientClick属性,当用户点击按钮的时候在浏览器端执行的代码,    注意OnClientClick是字符串属性,写的代码是JavaScript代码,运行在浏览器端。    <asp:Button ID="btnDel" runat="server" onclientclick="return confirm('真的要删除吗?')" Text="删除" />   2、LinkButton,用法和Button差不多,区别就是Button控件渲染为按钮,而LinkButton渲染为超链接。    不要用LinkButton来实现普通的超链接,因为LinkButton的href为一段javascript代码,进行的是表单的Post,    无法“在新窗口中打开连接”。和讲“行删除”那个例子中href为javascript的超链接原理一样。    一般用Button就行,只有用户要求“长成超链接好”采用LinkButton,就是一个在浏览器中渲染成超链接,    服务端当成按钮用的东西。    HyperLink:IsPostBack=False,没有提交表单内容,没有OnClick事件。   3、ImageButton控件也和Button差不多,只不过是显示为图片,渲染为input(type=image)   4、Button、LinkButton、ImageButton等控件都有CommandName、CommandArgument两个属性和Command事件    可以让多个按钮控件共享一个Command事件处理函数,通过读取事件对象e的CommandName、CommandArgument两个属性读取被点击按钮上设置的这两个参数来执行不同的操作。例子:编辑、删除多行数据。这种用法在ListView等控件中用的最多。

5.LinkButton: (提交表单的原理),当点击LinkButton时,会调用href中的js方法__doPostBack(),         将LinkButton的ID赋给隐藏域__EventTarget中的value中         并进行submit()提交表单,将隐藏域参数传递过去.所以在服务器端就能够知道触发的事件 6.Panel控件:   GroupingText属性,设置后就渲染为含有<fieldset>的div标签,也就是GroupBox效果,否则渲染为<div> 7、HyperLink控件,超链接。和LinkButton不一样(常考)  不会向服务器端Post,就是一个超链接。NavigateURL:链接地址;Text:显示文本。  如果设定ImageUrl属性则会显示图片超链接。

8、FileUpload控件,文件上传控件。渲染成input(type=file)。  属性:FileContent以流形式获得上传的文件;FileName 上传文件名;  HasFile Bool值,表示用户是否选择文件,SaveAs方法用于将文件保存到磁盘的指定位置。  漏洞:文件上传漏洞(上传一个下载源代码的aspx、Process.Start启动格式化,创建管理员、开启远程桌面)。解决方法:只允许上传指定类型文件,上传文件夹不给执行权限。    FileUpload上传控件:   添加一个Button按钮注册点击事件后,   this.FileUpload.SaveAs(Sever.MapPath("保存的文件名"));

NOTE: Page_Load()会优先于服务器控件所注册事件的执行, 第一次加载页面的时候     不会调用服务器控件的注册事件         点击"服务器控件"生成的按钮,浏览器会提交表单到服务器,表单中     包含控件数据,同时被点击的按钮和值也会被提交到服务器.(textBox1=123 & Button1=Button)         服务器根据请求报文里的参数值(textBox1=123 & Button1=Button),判断并执行按钮的点击方法     会调用服务器端的按钮事件   NOTE: aspx页面的PR()方法执行的是Page类中的, 生命周期在Page类中的PR方法中已经写好了     所以执行的时候会执行页面生命周期中注册的事件

    ashx一般处理程序页面,PR方法是我们程序员自己写的,我们并没有定义生命周期中的     执行的方法,所以不会执行生命周期.

所有的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’)”;

2.服务器端控件需要执行js代码时,需要再OnClientClick=""中使用,   会在客户端生成onclick事件

3.三种控件  1.HTML标签   ASP.Net把HTML控件当成普通字符串渲染到浏览器端,不去检查正确性、无法在服务器端进行处理。  2.runat="sever"的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='哈哈';"      直接在属性中有问题,会把<%直接输出到浏览器端,因此不要在控件的属性值中写<%%>。  3.ASP.NET服务端控件   不要在属性中使用<%= %>,会直接原样输出   经过ASP.Net高度封装的控件,使用简单,运行在服务器端,   可以在服务端使用C#代码进行操作,会渲染到客户端为HTML控件。

4.数据绑定分为数据源和数据绑定控件两部分  数据绑定控件通过数据源来获得数据,通过数据源来隔离数据提供者和数据使用者  数据绑定控件通过数据源来对数据进行修改,数据源有SqlDataSource,AccessDataSource、ObjectDataSource、LinqDataSource、EntityDataSource、XmlDataSource等  LinqDataSource、EntityDataSource也是只有在很极端的采用Linq、EF的项目中才会用,XmlDataSource是处理XML数据是才可能会用。ObjectDataSource是Web开发中应用最广的数据源,也能很容易的进行数据库切换。    数据绑定控件有列表数据绑定控件(DropDownList、RadioButtonList、ListBox、CheckBoxList、BulletedList等)和复杂控件(DataGrid、GridView、DetailsView、FormView、ListView、Repeater、DataList等,GridView等都是ListView子集)。  复杂控件中DataGrid已经不推荐使用,Repeater是最轻量级的组件,在互联网的前台用的最多

5.DropDownList控件,设置下拉框 请选择项 将属性AppendDataBoundItems=true;    DropDownList显示来自于ObjectDataSource的数据,选择数据源(DataSourceID属性)为刚才的ObjectDataSource,并且设定显示字段(DataTextField)和值字段(DataValueField)即可。RadioButtonList、ListBox、CheckBoxList、BulletedList等也都是这么用。   手工设定绑定,除了可以给控件的DataSourceID属性设置一个数据源的方式进行数据绑定(推荐),还可以在代码中通过代码设置绑定(旧版本的ASP.Net只能这样绑定,新版本中不推荐)。   用代码绑定可以将任何实现了IEnumerable接口的对象绑定到数据绑定控件。ListBox2.DataSource = new object[]{3,5,6};ListBox2.DataBind();   由于数据绑定控件默认会将数据保存在ViewState中,因此不会每次刷新页面都会重新加载数据,只有第一次需要加载(!IsPostBack)   由于代码绑定再禁用ViewState的情况下有很多麻烦事,因此推荐用DataSourceID的方式,控件会自己来判断是否应该重新取得数据。   DropDownList原有“请选择性别”和数据绑定项的共存:AppendDataBoundItems=“true”,把数据绑定的项加到后面。 6.Repeater数据控件 ItemCommand(), commandName,commandArgument

7.服务器数据控件中Eval() 与 Bind() 方法的区别  Eval():只负责读数据  Bind():负责修改和返回(写入)数据  一般出现在修改模板中     8.LayoutTemplate 布局模板 中有一行<tr ID="itemPlaceholder" runat="server">        占位符

9.页码条外置的时候需要为DataPager控件 指定PageControlID 指向要分页的控件

转载于:https://www.cnblogs.com/zxp19880910/archive/2012/09/01/2666279.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值