Asp.net 简明教程
ASP.NET - Server Side
我们已经研究了页面生命周期,以及如何将控件包含在页面中。页面本身被实例化作为一个控件对象。所有 Web 表单基本上都是 ASP.NET 页面类的实例。页面类具有以下极其有用的属性,它们对应于固有对象:
-
Session
-
Application
-
Cache
-
Request
-
Response
-
Server
-
User
-
Trace
我们将在适当的时候讨论这些对象。在本教程中,我们将探讨 Server 对象、Request 对象和 Response 对象。
Server Object
Asp.NET 中的 Server 对象是 System.Web.HttpServerUtility 类的实例。HttpServerUtility 类提供了大量属性和方法来执行各种作业。
Properties and Methods of the Server object
该 Server 对象通过 ASP.NET 提供的固有 HttpServerUtility 类来公开其方法和属性。
下表提供了属性列表:
Property |
Description |
MachineName |
Name of server computer |
ScriptTimeOut |
获取并设置请求超时值,单位为秒。 |
下表提供了一些重要方法的列表:
Method |
Description |
CreateObject(String) |
创建由其 ProgID(编程 ID)标识的 COM 对象的实例。 |
CreateObject(Type) |
创建由其类型标识的 COM 对象的实例。 |
Equals(Object) |
确定指定的对象是否等于当前对象。 |
Execute(String) |
在当前请求的上下文中执行指定虚拟路径的处理程序。 |
Execute(String, Boolean) |
在当前请求的上下文中执行指定虚拟路径的处理程序,并指定是清除 QueryString 和 Form 集合。 |
GetLastError |
Returns the previous exception. |
GetType |
获取当前实例的类型。 |
HtmlEncode |
将普通字符串更改为具有合法 HTML 字符的字符串。 |
HtmlDecode |
将 Html 字符串转换为普通字符串。 |
ToString |
返回表示当前对象的字符串。 |
Transfer(String) |
对于当前请求,终止当前页面的执行,并使用页面的指定 URL 路径启动新页面的执行。 |
UrlDecode |
将 URL 字符串转换为普通字符串。 |
UrlEncodeToken |
与 UrlEncode 相同,但在包含 Base64 编码数据的字节数组上使用。 |
UrlDecodeToken |
与 UrlDecode 相同,但在包含 Base64 编码数据的字节数组上使用。 |
MapPath |
返回与服务器上指定虚拟文件路径相对应的物理路径。 |
Transfer |
将执行传输到当前应用程序中的另一个网页。 |
Request Object
请求对象是 System.Web.HttpRequest 类的一个实例。它表示让页面加载到浏览器中所生成的 HTTP 请求的值和属性。
此对象所展示的信息被更高级别的抽象(Web 控件模型)所封装。然而,此对象有助于检查某些信息,例如客户端浏览器和 cookie。
Properties and Methods of the Request Object
下表提供了请求对象的几个值得注意的属性:
Property |
Description |
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 |
获取按优先顺序排列的客户端语言偏好的字符串数组。 |
下表提供了一些重要方法的列表:
Method |
Description |
BinaryRead |
从当前输入流中二进制读取指定数量的字节。 |
Equals(Object) |
判断指定的对象是否等于当前的对象。(从 object 继承。) |
GetType |
获取当前实例的类型。 |
MapImageCoordinates |
将输入图像字段表单参数映射到适当的 x 坐标和 y 坐标值。 |
MapPath(String) |
将指定的虚拟路径映射到物理路径。 |
SaveAs |
将 HTTP 请求保存到磁盘。 |
ToString |
返回一个表示当前对象的 String。 |
ValidateInput |
强制验证通过 Cookies、Form 和 QueryString 属性访问的集合。 |
Response Object
Response 对象表示服务器对客户端请求的响应。它是 System.Web.HttpResponse 类的实例。
在 ASP.NET 中,Response 对象在向客户端发送 HTML 文本时不会发挥任何重要作用,因为服务器端控件具有嵌套的面向对象的呈现自身的方法。
不过,HttpResponse 对象仍然提供一些重要功能,比如 cookie 功能和 Redirect() 方法。Response.Redirect() 方法允许将用户转移到另一个页面,这个页面可以在应用程序内也可以在外部。它需要一个往返过程。
Properties and Methods of the Response Object
下表提供了一些 Response 对象值得注意的属性:
Property |
Description |
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 内容。 |
下表提供了一些重要方法的列表:
Method |
Description |
AddHeader |
将 HTTP 标头添加到输出流。AddHeader 适用于兼容早期版本的 ASP。 |
AppendCookie |
基础设施将 HTTP cookie 添加到固有 cookie 集合。 |
AppendHeader |
将 HTTP 标头添加到输出流。 |
AppendToLog |
将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。 |
BinaryWrite |
将一串二进制字符写入到 HTTP 输出流。 |
ClearContent |
清除缓冲区流中的所有内容输出。 |
Close |
关闭与客户端的套接字连接。 |
End |
将所有当前缓冲的输出发送到客户端,停止页面的执行,并引发 EndRequest 事件。 |
Equals(Object) |
确定指定的对象是否等于当前对象。 |
Flush |
将所有当前缓冲的输出发送到客户端。 |
GetType |
获取当前实例的类型。 |
Pics |
将一个 HTTP PICS-Label 头追加到输出流中。 |
Redirect(String) |
将一个请求重定向到一个新的 URL,并指定这个新的 URL。 |
Redirect(String, Boolean) |
将客户端重定向到一个新的 URL,指定一个新的 URL,并指定当前页面执行是否终止。 |
SetCookie |
更新 cookie 集合中一个已经存在的 cookie。 |
ToString |
返回表示当前对象的字符串。 |
TransmitFile(String) |
直接将指定的文件写入一个 HTTP 响应输出流,而不将其保存在内存中。 |
Write(Char) |
将一个字符写入一个 HTTP 响应输出流。 |
Write(Object) |
将一个对象写入一个 HTTP 响应流中。 |
Write(String) |
将一个字符写入 HTTP 响应输出流中。 |
WriteFile(String) |
将指定文件的直接内容以文件块的形式写入一个 HTTP 响应输出流中。 |
WriteFile(String, Boolean) |
将指定文件的直接内容以内存块的形式写入一个 HTTP 响应输出流中。 |
Example
下面这个简单的例子有一个文本框控件,用户可以在其中输入姓名;一个将其信息发送到服务器的按钮;一个显示客户端计算机 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())
}
}
运行该页面可查看以下结果: