- 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()) } }
运行页面以查看以下结果