- ASP.NET 教程
- ASP.NET - 首页
- ASP.NET - 简介
- ASP.NET - 环境
- ASP.NET - 生命周期
- ASP.NET - 第一个示例
- ASP.NET - 事件处理
- ASP.NET - 服务器端
- ASP.NET - 服务器控件
- ASP.NET - HTML 服务器控件
- ASP.NET - 客户端
- ASP.NET - 基本控件
- ASP.NET - 指令
- ASP.NET - 状态管理
- ASP.NET - 验证器
- ASP.NET - 数据库访问
- ASP.NET - ADO.NET
- ASP.NET - 文件上传
- ASP.NET - 广告轮播
- ASP.NET - 日历控件
- ASP.NET - 多视图
- ASP.NET - 面板控件
- ASP.NET - AJAX 控件
- ASP.NET - 数据源
- ASP.NET - 数据绑定
- ASP.NET - 自定义控件
- ASP.NET - 个性化设置
- ASP.NET - 错误处理
- ASP.NET - 调试
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 数据缓存
- ASP.NET - Web 服务
- ASP.NET - 多线程
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 资源
- ASP.NET - 快速指南
- ASP.NET - 有用资源
- ASP.NET - 讨论
ASP.NET - 服务器端
我们已经学习了页面生命周期以及页面如何包含各种控件。页面本身作为控件对象实例化。所有 Web 窗体基本上都是 ASP.NET Page 类的实例。Page 类具有以下极其有用的属性,这些属性对应于内在对象
- 会话 (Session)
- 应用程序 (Application)
- 缓存 (Cache)
- 请求 (Request)
- 响应 (Response)
- 服务器 (Server)
- 用户 (User)
- 跟踪 (Trace)
我们将适时讨论这些对象中的每一个。在本教程中,我们将探讨 Server 对象、Request 对象和 Response 对象。
Server 对象
Asp.NET 中的 Server 对象是 System.Web.HttpServerUtility 类的实例。HttpServerUtility 类提供许多属性和方法来执行各种任务。
Server 对象的属性和方法
HttpServerUtility 类的属性和方法通过 ASP.NET 提供的内在 Server 对象公开。
下表列出了这些属性
| 属性 | 描述 |
|---|---|
| MachineName | 服务器计算机的名称 |
| ScriptTimeOut | 获取和设置请求超时值(以秒为单位)。 |
下表列出了一些重要的方法
| 方法 | 描述 |
|---|---|
| CreateObject(String) | 创建由其 ProgID(程序化 ID)标识的 COM 对象的实例。 |
| CreateObject(Type) | 创建由其 Type 标识的 COM 对象的实例。 |
| Equals(Object) | 确定指定的 Object 是否等于当前 Object。 |
| Execute(String) | 在当前请求的上下文中执行指定虚拟路径的处理程序。 |
| Execute(String, Boolean) | 在当前请求的上下文中执行指定虚拟路径的处理程序,并指定是否清除 QueryString 和 Form 集合。 |
| GetLastError | 返回之前的异常。 |
| GetType | 获取当前实例的 Type。 |
| HtmlEncode | 将普通字符串更改为具有合法 HTML 字符的字符串。 |
| HtmlDecode | 将 HTML 字符串转换为普通字符串。 |
| ToString | 返回表示当前 Object 的 String。 |
| Transfer(String) | 对于当前请求,终止当前页面的执行,并使用页面的指定 URL 路径开始新页面的执行。 |
| UrlDecode | 将 URL 字符串转换为普通字符串。 |
| UrlEncodeToken | 与 UrlEncode 的作用相同,但在包含 Base64 编码数据的字节数组上操作。 |
| UrlDecodeToken | 与 UrlDecode 的作用相同,但在包含 Base64 编码数据的字节数组上操作。 |
| MapPath | 返回对应于服务器上指定的虚拟文件路径的物理路径。 |
| Transfer | 将执行转移到当前应用程序中的另一个网页。 |
Request 对象
Request 对象是 System.Web.HttpRequest 类的实例。它表示使页面加载到浏览器中的 HTTP 请求的值和属性。
此对象提供的信息由更高级别的抽象(Web 控件模型)包装。但是,此对象有助于检查某些信息,例如客户端浏览器和 Cookie。
Request 对象的属性和方法
下表列出了一些值得注意的 Request 对象属性
| 属性 | 描述 |
|---|---|
| AcceptTypes | 获取客户端支持的 MIME 接受类型的字符串数组。 |
| ApplicationPath | 获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。 |
| Browser | 获取或设置有关请求客户端浏览器功能的信息。 |
| ContentEncoding | 获取或设置实体主体的字符集。 |
| ContentLength | 指定客户端发送的内容长度(以字节为单位)。 |
| ContentType | 获取或设置传入请求的 MIME 内容类型。 |
| Cookies | 获取客户端发送的 Cookie 集合。 |
| FilePath | 获取当前请求的虚拟路径。 |
| Files | 获取客户端以多部分 MIME 格式上传的文件集合。 |
| Form | 获取窗体变量集合。 |
| Headers | 获取 HTTP 标头集合。 |
| HttpMethod | 获取客户端使用的 HTTP 数据传输方法(例如 GET、POST 或 HEAD)。 |
| InputStream | 获取传入 HTTP 实体主体的內容。 |
| IsSecureConnection | 获取一个值,该值指示 HTTP 连接是否使用安全套接字(即 HTTPS)。 |
| QueryString | 获取 HTTP 查询字符串变量的集合。 |
| RawUrl | 获取当前请求的原始 URL。 |
| RequestType | 获取或设置客户端使用的 HTTP 数据传输方法(GET 或 POST)。 |
| ServerVariables | 获取 Web 服务器变量的集合。 |
| TotalBytes | 获取当前输入流中的字节数。 |
| Url | 获取有关当前请求的 URL 的信息。 |
| UrlReferrer | 获取有关链接到当前 URL 的客户端先前请求的 URL 的信息。 |
| UserAgent | 获取客户端浏览器的原始用户代理字符串。 |
| UserHostAddress | 获取远程客户端的 IP 主机地址。 |
| UserHostName | 获取远程客户端的 DNS 名称。 |
| UserLanguages | 获取客户端语言首选项的已排序字符串数组。 |
下表列出了一些重要的方法
| 方法 | 描述 |
|---|---|
| BinaryRead | 从当前输入流执行指定数量字节的二进制读取。 |
| Equals(Object) | 确定指定的 Object 是否等于当前 Object。(继承自 object。) |
| GetType | 获取当前实例的 Type。 |
| MapImageCoordinates | 将传入的图像字段窗体参数映射到适当的 x 坐标和 y 坐标值。 |
| MapPath(String) | 将指定的虚拟路径映射到物理路径。 |
| SaveAs | 将 HTTP 请求保存到磁盘。 |
| ToString | 返回表示当前对象的字符串。 |
| ValidateInput | 导致对通过 Cookies、Form 和 QueryString 属性访问的集合进行验证。 |
Response 对象
Response 对象表示服务器对客户端请求的响应。它是 System.Web.HttpResponse 类的实例。
在 ASP.NET 中,Response 对象在将 HTML 文本发送到客户端方面没有发挥任何重要作用,因为服务器端控件具有嵌套的、面向对象的自身呈现方法。
但是,HttpResponse 对象仍然提供一些重要的功能,例如 Cookie 功能和 Redirect() 方法。Response.Redirect() 方法允许将用户转移到另一个页面,在应用程序内部和外部。它需要往返。
Response 对象的属性和方法
下表列出了一些值得注意的 Response 对象属性
| 属性 | 描述 |
|---|---|
| Buffer | 获取或设置一个值,该值指示是否缓冲输出并在完成响应处理后发送输出。 |
| BufferOutput | 获取或设置一个值,该值指示是否缓冲输出并在完成页面处理后发送输出。 |
| Charset | 获取或设置输出流的 HTTP 字符集。 |
| ContentEncoding | 获取或设置输出流的 HTTP 字符集。 |
| ContentType | 获取或设置输出流的 HTTP MIME 类型。 |
| Cookies | 获取响应 Cookie 集合。 |
| Expires | 获取或设置浏览器上缓存的页面过期之前的分钟数。 |
| ExpiresAbsolute | 获取或设置从缓存中删除缓存信息的绝对日期和时间。 |
| HeaderEncoding | 获取或设置表示当前标头输出流编码的编码对象。 |
| Headers | 获取响应标头的集合。 |
| IsClientConnected | 获取一个值,该值指示客户端是否仍然连接到服务器。 |
| Output | 启用将文本输出到传出的 HTTP 响应流。 |
| OutputStream | 启用对传出的 HTTP 内容主体的二进制输出。 |
| RedirectLocation | 获取或设置 Http Location 标头的值。 |
| Status | 设置返回给客户端的状态行。 |
| StatusCode | 获取或设置返回给客户端的输出的 HTTP 状态代码。 |
| StatusDescription | 获取或设置返回给客户端的输出的 HTTP 状态字符串。 |
| SubStatusCode | 获取或设置限定响应状态代码的值。 |
| SuppressContent | 获取或设置一个值,该值指示是否将 HTTP 内容发送到客户端。 |
下表列出了一些重要的方法
| 方法 | 描述 |
|---|---|
| AddHeader | 将 HTTP 标头添加到输出流。AddHeader 用于与早期版本的 ASP 保持兼容性。 |
| AppendCookie | 基础结构将 HTTP Cookie 添加到内在 Cookie 集合。 |
| AppendHeader | 将 HTTP 标头添加到输出流。 |
| AppendToLog | 将自定义日志信息添加到 InterNET Information Services (IIS) 日志文件。 |
| BinaryWrite | 将二进制字符字符串写入 HTTP 输出流。 |
| ClearContent | 清除缓冲流中的所有内容输出。 |
| Close | 关闭与客户端的套接字连接。 |
| End | 将所有当前缓冲的输出发送到客户端,停止页面的执行,并引发 EndRequest 事件。 |
| Equals(Object) | 确定指定的 Object 是否等于当前 Object。 |
| Flush | 将所有当前缓冲的输出发送到客户端。 |
| GetType | 获取当前实例的 Type。 |
| Pics | 将 HTTP PICS-Label 标头附加到输出流。 |
| Redirect(String) | 将请求重定向到新的 URL 并指定新的 URL。 |
| Redirect(String, Boolean) | 将客户端重定向到新的URL。指定新的URL以及是否应终止当前页面的执行。 |
| SetCookie | 更新cookie集合中已存在的cookie。 |
| ToString | 返回表示当前 Object 的 String。 |
| TransmitFile(String) | 将指定的文件直接写入HTTP响应输出流,而无需将其缓冲在内存中。 |
| Write(Char) | 将字符写入HTTP响应输出流。 |
| Write(Object) | 将对象写入HTTP响应流。 |
| Write(String) | 将字符串写入HTTP响应输出流。 |
| WriteFile(String) | 将指定文件的內容作为文件块直接写入HTTP响应输出流。 |
| WriteFile(String, Boolean) | 将指定文件的內容作为内存块直接写入HTTP响应输出流。 |
示例
以下简单示例包含一个文本框控件,用户可以在其中输入姓名;一个按钮,用于将信息发送到服务器;以及一个标签控件,用于显示客户端计算机的URL。
内容文件
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="server_side._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Enter your name:
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
<br />
<asp:Label ID="Label1" runat="server"/>
</div>
</form>
</body>
</html>
Button1_Click 后面的代码
protected void Button1_Click(object sender, EventArgs e) {
if (!String.IsNullOrEmpty(TextBox1.Text)) {
// Access the HttpServerUtility methods through
// the intrinsic Server object.
Label1.Text = "Welcome, " + Server.HtmlEncode(TextBox1.Text) + ". <br/> The url is " + Server.UrlEncode(Request.Url.ToString())
}
}
运行页面以查看以下结果