Asp.net 简明教程

ASP.NET - Server Side

我们已经研究了页面生命周期,以及如何将控件包含在页面中。页面本身被实例化作为一个控件对象。所有 Web 表单基本上都是 ASP.NET 页面类的实例。页面类具有以下极其有用的属性,它们对应于固有对象:

  1. Session

  2. Application

  3. Cache

  4. Request

  5. Response

  6. Server

  7. User

  8. 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())
   }
}

运行该页面可查看以下结果:

asp.net server side