第4章 系统对象

内容纲要

4.1 Page对象 

在 ASP.NET 中,基本内置对象包括 Page 对象、Request 对象、Response 对象、Session 对象、Cookie 对象、Application 对象和 Server 对象,所有页面的基类对象是 Page 

ASP.NET 中常见的系统对象 

  • Page 对象 :Page 对象是指向页面自身的方式,在整个页面的执行期内都可以使用该对象 
  • Request 对象 :此对象封装了由 Web 浏览器或其他客户端生成的 HTTP 请求的细节(参数、属性和数据),提供从浏览器读取信息或读取客户端信息等功能,用于页面请求 
  • Response 对象 :此对象封装了返回到 HTTP 客户端的输出,用于向浏览器输出信息或发送指令 
  • Session 对象 :为某个用户提供共享信息,作用于用户会话期 
  • Cookie 对象 :保存在页面客户端的一种储存信息的方式
  • Application 对象 :为所有用户提供共享信息,作用于整个应用程序运行期
  • Server 对象 :它提供了服务器端的一些属性和方法,如页面文件的绝对路径等

4.1.1 Page对象的简介 

每一个 aspx 页面都对应一个页面类,它继承于 System.Web.UI.Page类 

Page 对象就是此页面类的实例,即每一个页面就是一个 Page 对象 

aspx 页面在运行的过程中被编译为Page 对象,并缓存于服务器内存中

4.1.2 Page对象的使用 

Page 对象的常见属性及其说明 

  • IsPostBack :Bool 值,指示该页面是否为响应客户端回发而加载,或其是否正 被首次加载或访问 
  • IsValid :Bool 值,指示该页面验证是否成功 
  • MasterPageFile :用于获取或设置母版页的文件名 

Page 对象还包括对 Response、Request、Server、Application 和 Session 对象的引用,Page 对象使用最为频繁的是 IsPostBack 

 IsPostBack 的用法 

示例:

protected void Page_Load(object sender, EventArgs e)
{
  // 如果页面是首次加载,而不是回发,则执行 if 语句内容
  if (!IsPostBack)
  {
    this.txtUserName.Text = " 请输入用户名 ";
    this.txtPwd.Text = " 请输入密码 ";
  }
}

4.2 Response对象 

4.2.1 Response对象的使用 

Response 对象用于将数据从服务器发送回浏览器,它允许将数据作为请求的结果发送到浏览器中,并提供有关响应的信息,可用于在页面中输入数据和在页面中跳转,还可以传递各个页面的参数 

Response 对象常见的属性和方法如表 

  • Cookies :获取响应的 Cookie 集合 
  • Redirect :将客户端重定向到新的 URL 
  • Write :将信息写入 HTTP 响应输入流 

Write() 方法:Response 对象通过 Write() 方法在页面上输出数据。使用 Write() 方法向页面输出一段文字 

protected void Page_Load(object sender, EventArgs e)
{
  if(!this.IsPostBack)
  {
    Response.Write("ASP.NET,你好! ");
  }
}

除了可以用 Write() 方法输出文字外,还可以用 Write() 方法输出 JavaScript 脚本 

protected void btnDelete_Click(object sender, EventArgs e)
{
  Response.Write("<script>alert(' 删除成功! ');</script>");
}

 Redirect() 方法:Response 对象的 Redirect() 方法可以实现页面重定向的功能,且在重定向到新的 URL 时可以传递参数 

protected void btnRedirect_Click(object sender, EventArgs e)
{
  Response.Redirect("Register.aspx");
}

4.3 Request对象 

4.3.1 Request对象的使用 

Request 对象用于检索从浏览器向服务器所发送的请求中的信息,它提供对当前页请求的访问,包括标题、Cookie 和查询字符串等

常见用法包括 Request.QueryString、Request.Form 和 Request,第 3 种写法是前两种的缩写,可取代前两种

Request 对象常见的属性和方法 

  • QueryString :取得 Get 请求中的数据 
  • Form :取得 Post 请求中的数据 
  • Request :取得 Post 或 Get 请求中的数据 

 QueryString 属性获取页面间传值。在两个页面之间,URL 参数传值是常见的 Get 传值方式。通过 URL 查询字符串“? =”的格式语法,将值传递到另一个页面 

 QueryString 属性获取页面间传值 

Default.aspx 前端代码:
<form id="form1" runat="server">
  <div>
    <a href="ShowQueryString.aspx?Param=1"> 超链接传递参数 </a>
  </div>
</form>
ShowQueryString.aspx 后端代码:
protected void Page_Load(object sender, EventArgs e)
{
  if(!this.IsPostBack)
  {
    if (Request.QueryString["Param"] != null && Request.QueryString["Param"]!=string.Empty)
    {
      string value = Request.QueryString["Param"];
      Response.Write(" 接收到的参数为:" + value);
    }
  }
}

Form 属性传值。通过 Form 表单提交的数据(通常是 POST 传值),可以用 Request.Form 属性来获取 

前端代码如下:
<body>
  <%  string strUserName = Request.Form["Name"]; %>
  姓名:<%=strUserName%>
  <form action="" method="post"> 
    <P> 姓名:<input type="TEXT" size="20" name="Name"></P>
    <P><input type="submit" value=" 提交 "></P>
  </form>
</body>

4.4 Server对象 

4.4.1 Server 对象的使用 

Server 对象提供了对服务器上的方法和属性的访问,用于访问服务器上的资源,其类名称是 HttpServerUtility 

Server 对象的常用属性和方法 

  • HtmlEncode :对字符串进行编码,使其在浏览器中正确显示
  • HtmlDecode :与 HtmlEncode 相反,对已编码的内容进行解码 
  • MapPath :返回 Web 服务器,指定与虚拟路径相对应的物理文件路径 
  • UrlEncode :对 URL 地址进行编码,URL 在传输含有“#”“&”等特殊符号的 参数时需要进行编码。否则其后的内容不会被识别 
  • UrlDecode :与 UrlEncode 相反,对已编码的 URL 进行解码 

MapPath 

语法:

Server.MapPath(string path); 

path 参数为网站的虚拟路径,如果为 null,则返回站点应用程序所在目录的物理路径 

HtmlEncode 和UrlEncode 等的使用 

<form id="form1" runat="server">
  Server.HtmlEncode:<% Response.Write(Server.HtmlEncode("<br>")); %><br />
  Server.UrlEncode:<% Response.Write(Server.UrlEncode("defaut.aspx?name= 王 ")); %><br />
</form>

总结 :

  •  IsPostBack 属性指示该页面是否为响应客户端回发而加载或其是否正被首次加载或访问 
  • 请求对象为 Response 对象,响应对象为 Request 对象
  • Request 对象功能是从客户端获取数据
  • 使用 QueryString 属性获取页面间 Get 传值
  • 使用 Form 属性获取 POST 传值
  • 使用 Request 获取 Get 或 POST 传值 
  • 使用 Server.UrlEncode 对数据进行编码, Server.UrlDecode 对数据进行解码 

给TA打赏
共{{data.count}}人
人已打赏
.NET

第3章 高级控件

2022-8-19 17:44:37

.NET

在 .NET 项目中添加包

2022-8-22 9:33:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索