客户机向服务器请求一个文件,服务器启动ASP.NET分析器,编译器会把该文件和一个相关的C#文件一起编译,创建一个程序集,然后.NET运行库把程序集编译为本机代码,该程序集包含一个page类,调用它会把html代码返回给客户端,之后删除page对象,但是会保留程序集用于以后的请求。- 通过runat=“server”特性,ASP.NET服务器控件会与html标记关联起来。
- System.web.ui.htmlcontrols 和 system.web.ui.webcontrols中有UI控件,前者类似html控件,可用js编程,而不添加runat 特性
- Label即<span>,literal即 static text,textbox即<input type=”text”>,button即<input type=”submit”>,linkbutton即<a href=”javascrip:dopostback()”>,imagebutton即<input type=”image”>,hyperlink即<a>,dropdownlist即<select>,listbox即<select size=””>,checkbox即<input type=”checkbox”>,radiobutton即<input type=”radio”>,image即<img src=””>,calendar即<table>,treeview即<div><table>
- 如果希望把更改事件立即传送给服务器,可以把autopostback属性设置为true,当然网络通讯量也会增加
- 比较控件新值和旧值是由view state完成的,view state是一个隐藏字段,它会同页面内容一起发送给浏览器。
- 为了访问前面页面中的控件,page类定义了属性previewPage,这个页面的控件可以使用FindControl()方法来访问
- 使用updatePanel可以实现局部刷新,所谓Ajax
- 使用ajax web form 模版添加scriptManager对象,可以使用这个类加载自己的定制脚本
- 一些验证控件:
RequiredFieldValidator 指定所验证的控件需要输入一些内容,如果所验证的控件要设置初始值,而用户必须改变初始值,就可以使用验证控件的属性设置这个初始值
RangeValidator 定义允许用户输入的最大值和最小值
RegularExpressionValidator 通过validayionExpression属性,可以使用perl5语法设置一个正则表达式来检查用户的输入
CompareValidator比较多个值,比如密码验证
CustomValidator 如果其他验证控件都不满足验证要求,就可以使用他定义客户端和服务器端验证功能
ValidationSummary编写页面的小结,而不是编写与输入控件直接相关的错误消息
- 状态管理:
ViewState 在客户端使用,有效时间只在一个页面中
Cookie 在客户端使用,关闭浏览器时删除临时cookie,永久cookie存储在客户系统磁盘上
Session 在服务器端使用,会话状态与浏览器会话相关,会话在超时后变得无效
Application在服务器端使用,在所有的客户端上共享应用程序状态,这个状态在服务器重新启动之前都是有效的
Cache 在服务器端使用,类似于应用程序状态,缓存是共享的,但是,使缓存无效有更好的控制方法
- 使用httpresponse类和httprequire类可以在服务器和浏览器之间传送cookie
- 创建global.asax文件,在里面定义application状态,会话状态可以存储在httpsessionstate对象中,用page类的session属性来访问
- 对于应用程序状态,应使用httpapplicationState类,通过page类的application属性可以访问它
- 对于缓存,需要使用system.web.cache名称空间和cache类,page类的cache属性返回一个cache对象
- 母板页.master,masterpagefile属性或webconfig配置文件,contentplaceholder
- 用于导航的控件:
Sitemapdatasource 控件是一个数据源控件,它引用站点地图数据提供程序
Menu控件按照站点地图数据源的定义显示页面的链接,菜单可以水平或垂直显示,而且有许多配置其样式的选项
Sitemappath控件使用很小的空间显示页面在web站点层次结构中的当前位置,可以显示文本或图像超链接
TreeView控件显示web站点的层次结构视图
- 安全控件:
Login,一个复合控件,包含要求用户输入用户名和密码的控件
LoginStatus,根据用户是否登录来决定包含登录或注销的超链接
LoginName,显示用户名
LoginView,根据用户是否登录显示不同的内容
PasswordRecovery,一个复合控件,用于重新设置被遗忘的密码,根据安全配置,要求用户回答以前设置的问题,或通过电子邮件发送密码
ChangePassword,一个复合控件,允许登录的用户改变其密码
CreateUserWizard,一个向导,可以创建新用户,把用户信息写入membership提供程序
- 数据控件:
GridView,用行和列来显示数据
DataList,在一列中显示所有的项
DetailsView,如果数据具有主从关系,detailsview控件就可以和gridview一起使用
Formview,显示数据源中的一行
Repeater,基于模版的控件,可用于定义从数据源中的数据生成什么html元素
Listview,基于模版,类似于repeater控件
- 数据源控件:
Sqldatasource,访问数据库,在内部使用dataset或datareader
Accessdatasource,可以使用access数据库
Entitydatasource,.net4.0中的新控件
Objectdatasource,允许把.net类用作数据源
Xmldatasource,允许访问xml文件,使用这个数据源可以显示层次结构
Sitemapdatasource,使用xml文件定义站点结构,创建到该网站的链接和引用