- ASP.NET控件基本
- ASP.NET服务器端控件是对HTML的封装(最终渲染为HTML代码输出给浏览器)/服务器端控件在内网系统 互联网系统的后台部分等访问频率不高的地方用的还是很适合的(缺点: 无用代码生成/必须post提交)
- ASP.NET服务器控件均从Control or WebControl类继承:
Control
WebControl
.ClientID---控件在浏览器端得Id(服务器端Id不一定等于浏览器端Id)
.Visible---控件是否可见(与DOM.style.display=“none”不同 不会渲染到浏览器端)
.CssClass---控件样式名(DOM.Class/不推荐通过属性面板进行各控件属性设置(内联/占内存 不易管理))
.Attributes---设置获取控件的额外属性(DOM.set(get)Attribute())
- ASP.NET服务器端控件属性中无法写入<% *** %>
- Label
- 渲染为<span>(.AssociatedControlID为空时)或<label>
- .Text: 显示文本
- .AssociatedControlID: 关联控件Id
- Literal
- 不渲染为任何标签(仅展示.Text内容文本)
- .Text: 显示文本
- .Mode: Encode时会自动对.Text内容进行HttpUtility.Encode()以避免XSS攻击
- TextBox
- 渲染为<input type=“text”>或<textarea>或<input type=“password”>
- .TextMode:
SingleLine(<input type=“text”>)
MultiLine(<textarea>)
Password(<input type=“password”>)
- .AutoPostBack(bool): 焦点离开时页面自动Post(调用_doPostBack()方法)
- RadioButton
- 渲染为<input type=“radio”>
- .GroupName: 进行分组
- Button / ImageButton / LinkButton
- Button渲染为<input type=“button”>
- ImageButton渲染为<input type=“image”>
- LinkButton渲染为<a>
- Button.OnClientClick: 浏览器端执行代码(JavaScript)
- 不要用LinkButton实现超链接(href为JavaScript代码 执行表单Post提交 无法”在新窗口中打开链接”)
- (Button/ImageButton/LinkButton).CommandName/.CommandArgument/.Command事件: 多个按钮共享同一Command事件处理函数(通过读取事件对象e的CommandName CommandArgument两个属性读取被点击按钮上设置的这两个参数来执行不同的操作/ListView等控件中使用较多)
- Panel
- 渲染为<div>/<fieldset>(GroupBox效果/设置.GroupingText时)
- .GroupingText: 渲染为
<div><fieldset><legend>***</legend></fieldset></div>
- HyperLink
- 渲染为<a>
- .NavigateUrl: 链接地址(使用虚拟路径时会自动进行转换)/指向站内资源较常用
- .Text: 显示文本
- ImageUrl: 显示图片超链接
- FileUpload
- 渲染为<input type=“file”>
- .HasFile(bool值): 用户是否选择上传文件
- .FileBytes: 以二进制的形式获得上传的文件
- .FileContent: 以流的形式获得上传的文件
- .PostedFile: 获得上载的文件的基础System.Web.UI.HttpPostedFile对象
- .FileName: 上传文件名
- .SaveAs(): 将文件保存到指定磁盘位置
- WebShell漏洞预防: 限制上传文件类型/设置上传目录下文件不能执行(设置IIS)