.NET 页面处理

一、自动回传(回传)

  1. 使用ASP.NET事件处理机制不可能处理所有的客户端操作,因为用户的操作是在客户端中进行的(只有浏览器知道,服务端代码不知道),而响应代码在服务器端进行,所以必须通知服务端,重新请求页面,才有机会执行到服务端代码。
  2. 自动回送机制可以使一些需要即时响应用户操作的控件得到扩展,让服务器端能够立即响应用户的操作
  3. 为控件设置AutoPostBack=true,在客户端自动生成一个名为_doPostBack的脚本函数,在该函数中提交表单,从而让后台代码有机会执行
  4. 调用页面中自动生成的_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 = "&lt;span style=&#39;color:red&#39;&gt;我是一个span容器&lt;/span&gt;";
          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

应用程序缓存处理类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值