ASP.Net服务端基本控件(Label Literal TextBox RadioButton Button LinkButton ImageButton Panel HyperLink FileUpload )

ASP.Net服务端控件是ASP.Net对HTML的封装,在C#代码中就可以用txt1.Text=‘abc’这种方式来修改input的值,ASP.Net会将服务端控件转成HTML代码输出给浏览器。服务端控件是ASP.Net非常吸引初学者、非常容易上手的东西,也是最被人诟病的东西。物尽其用,服务端控件在内网系统、互联网系统的后台部分等访问频率不高的地方用的还是很适合的。(互联网公司,产品型公司(OA))
在服务端控件的标签中写的属性如果不是控件内置的属性就会被原样的输出到客户端
所有的ASP.Net大部分都是从Control、WebControl类继承的,几乎都有的成员有: this."ID".value;
(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’)”;

Attributes属性设置额外属性:CheckBox1.Attributes["onmouseover"] = "alert('hello')"; 

1、Label控件。Text属性为显示文本。AssociatedControlID属性用来关联一个控件,如果为空的话会展示为一个<Span>,如果指定为一个控件的id,则会展示为一个HTML中的<Label>并且将for属性设置为被关联控件的ClientId。
2、Literal控件也是展示一段文本,但是Literal控件不会渲染任何额外的标签,就是将Text属性的值展示出来而已。

 

3、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方法。

 

4、RadioButton控件,对应为input(type=radio),通过GroupName属性进行分组,必须放在form 标签里面

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

9、Panel控件用来盛放一些控件。如果设定GroupingText属性那么就渲染为含有<fieldset>的div标签,也就是GroupBox效果,否则渲染为<div>

10、HyperLink控件,超链接。和LinkButton不一样(常考),不会向服务器端Post,就是一个超链接。NavigateURL:链接地址;Text:显示文本。如果设定ImageUrl属性则会显示图片超链接。
11、FileUpload控件,文件上传控件。渲染成input(type=file)。属性:FileContent以流形式获得上传的文件;FileName 上传文件名;HasFile Bool值,表示用户是否选择文件,SaveAs方法用于将文件保存到磁盘的指定位置。漏洞:文件上传漏洞(上传一个下载源代码的aspx、Process.Start启动格式化,创建管理员、开启远程桌面)。解决方法:只允许上传指定类型文件,上传文件夹不给执行权限。

 

 

原文地址:https://www.cnblogs.com/yuyangbk/p/12181324.html