一、自动回传(回传)
- 使用ASP.NET事件处理机制不可能处理所有的客户端操作,因为用户的操作是在客户端中进行的(只有浏览器知道,服务端代码不知道),而响应代码在服务器端进行,所以必须通知服务端,重新请求页面,才有机会执行到服务端代码。
- 自动回送机制可以使一些需要即时响应用户操作的控件得到扩展,让服务器端能够立即响应用户的操作
- 为控件设置AutoPostBack=true,在客户端自动生成一个名为_doPostBack的脚本函数,在该函数中提交表单,从而让后台代码有机会执行
- 调用页面中自动生成的_doPostBack()方法进行页面回送
二、客户端脚本与服务器脚本
在页面中添加客户端脚本代码
在页面中天界服务器脚本代码
按钮点击后的客户端脚本代码
按钮点击后的服务器脚本代码
检查客户端js脚本中的错误
三、Web窗体处理阶段
四、Page类的常用属性
4.1 IsPostBack属性
判断页面是否为回传的请求
If(!this.IsBack)
{
//页面初始化代码(仅执行一次)
}
Protected void Page_Load(object sender,EventArgs e)
{
//IsPostBack:页面的请求是首次请求,还是回传请求
//false首次请求,true回传请求(必须将表单重新提交给自己)
If(!IsPostBack)
{
//保证这里的代码是在页面首次请求时执行(超链接<a href=""></a>请求自己不是回传请求)
txt.Text=DateTime.Now.ToString()
}
}
4.2 Page类的其他属性
4.2.1 Application
应用程序状态管理
4.2.2 Session
会话状态管理
4.2.3 Server
服务器辅助类
- System.Web.HttpServerUtility类的实例
- 使用this.Server进行访问
- 常用方法
- HtmlEncode html标签的编码
- HtmlDecode html标签的解码
-
Protected void btnHtmlEncode_Click(object sender,EventArgs e) { String str = "<span style="color:red">我是一个span容器</span>"; Str = Server.HtmlEncode(str); Response.Write(str); } Protected void btnHtmlDecode_Click(object sender,EventArgs e) { String str = "<span style='color:red'>我是一个span容器</span>"; Str = Server.HtmlDecode(str); Response.Write(str); }
- UrlEncode URL的编码
- UrlDecode URL的解码
-
Protected void btnUrlEncode_Click(object sender,EventArgs e) { String url= "Main.aspx?userName=张三"; string path= Server.UrlEncode(url); Response.Write(path); } Protected void btnUrlDecode_Click(object sender,EventArgs e) { String str = "Main.aspx%3fuserName%3d%e5%bc%a0%e4%b8%89"; String path = Server.UrlDecode(url); Response.Write(path); }
- MapPath 将虚拟路径转换为实际可用的物理路径
-
Protected void btnMapPath_Click(object sender,EventArgs e) { //在服务端虚拟路径:~/,~表示当前站点的根目录 String path = "~/test.txt"; Path = Server.MapaPath(path);//将虚拟路径转换为实际可用的物理路径 Response.Write(path+"<br/>"); StreamReader sr = File.OpenText(path); String content = sr.ReadToEnd(); Response.Write(content); }
Transfer 在服务端停止当前页的执行,根据url加载指定的页面,地址栏没有变化
-
//Server.Transfer("~/main.aspx",false);第二个参数表示是否保留源页面中的form表单数据或querystring中的数据
- Execute 在当前上下文中执行指定的处理程序,没有终止当前页的执行,地址栏没有变化
-
Protected void btnTranfer_Click(object sender,EventArgs e) { //在服务器端停止当前页的执行,根据url加载指定的页面 Server.Tranfer("~/AdminMain.aspx?name=jack&password=123") } Protected void btnExecute_Click(object sender,EventArgs e) { //在当前上下文中执行指定的处理程序 Server.Execute("~/AdminMain.aspx?name=jack&password=123") } Protected void btnExecute_Click(object sender,EventArgs e) { //在客户端跳转,地址栏变化 Server.Redirect("~/AdminMain.aspx?name=jack&password=123") }
-
注意:Server.Tranfer(),Server.Execute(),Response.Redirect()的区别:
Response.Redirect()在客户端跳转,地址栏变化
Server.Tranfer(),Server.Execute()在服务端跳转,地址栏不变化
Server.Execute()停止当前页的执行,而Server.Execute()保留对当前页面的执行
4.2.4 Response
HTTP响应处理类(返回一个HttpResponse类型的对象,表示服务端发回给客户端的响应对象,封装了响应期间的数据
- System.Web.HttpResponse类的实例
- 使用this.Response进行访问
- 常用方法
- Write():服务端向客户端的HTTP输出流中输出内容
- Redirect():页面的重定向
eg:
//跳转到AdminMain.aspx页面,并且将需要传递的值以查询字符串传递到管理员页面
Response.Redirect("AdminMain.aspx?name+"+userName+"&password="+pwd)
- End():停止该页的执行
- Cookies
4.2.5 Request
HTTP请求处理类(返回一个HttpRequest类型的对象,表示请求期间的数据)
- System.Web.HttpRequest类的实例
- 使用this.Request进行访问
- 常用属性:
- Form:获得以post方式请求的数据
- QueryString:获得以get方式请求的数据
- Cookies
eg:
//通过Request.From["name"]:以post方式提交表单,获得表单中指定name的元素的值
//string userName=Request.Form["userName"]
//string pwd=Request.Form["pwd"]
//通过Request.QueryString["name"]:以get方式提交表单,获得表单中指定name的元素的值
4.2.6 Cache
应用程序缓存处理类