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
類提供了許多執行各種作業的屬性和方法。
服務器對象的屬性和方法HttpServerUtility
類的方法和屬性通過ASP.NET提供的內部服務器對象公開。
下表提供了屬性的列表:
屬性
描述
MachineName
服務器計算機的名稱
ScriptTimeOut
獲取和設置請求超時值,以秒爲單位。
下表列出了一些重要的方法:
編號
方法
描述
1
CreateObject(String)
創建由其ProgID(編程ID)標識的COM對象的一個實例。
2
CreateObject(Type)
創建由其類型標識的COM對象的一個實例。
3
Equals(Object)
確定指定的對象(Object
)是否等於當前的對象。
4
Execute(String)
在當前請求的上下文中執行指定虛擬路徑的處理程序。
5
Execute(String, Boolean)
在當前請求的上下文中執行指定虛擬路徑的處理程序,並指定是否清除QueryString
和Form
集合。
6
GetLastError
返回以前的異常。
7
GetType
獲取當前實例的類型。
8
HtmlEncode
將普通字符串更改爲具有合法HTML字符的字符串。
9
HtmlDecode
將Html字符串轉換爲普通字符串。
10
ToString
返回表示當前對象的字符串。
11
Transfer(String)
對於當前請求,終止當前頁面的執行,並使用指定的頁面URL路徑開始執行新頁面。
12
UrlDecode
將URL字符串轉換爲普通字符串。
13
UrlEncodeToken
與UrlEncode
相同,但是在包含Base64編碼數據的字節數組上。
14
UrlDecodeToken
與UrlDecode
相同,但在包含Base64編碼數據的字節數組上。
15
MapPath
返回與服務器上指定的虛擬文件路徑對應的物理路徑。
16
Transfer
將執行轉移到當前應用程序中的另一個網頁。
HttpRequest對象
HttpRequest
對象是System.Web.HttpRequest
類的一個實例。 它表示使頁面加載到瀏覽器中的HTTP請求的值和屬性。
這個對象提供的信息被更高層次的抽象(Web控制模型)所包圍。 但是,此對象有助於檢查某些信息,如客戶端瀏覽器和Cookie。
請求對象的屬性和方法
下表提供了Request
對象的一些值得注意的屬性:
編號
屬性
描述
1
AcceptTypes
獲取客戶端支持的MIME接受類型的字符串數組。
2
ApplicationPath
獲取服務器上的ASP.NET應用程序的虛擬應用程序根路徑。
3
Browser
獲取或設置有關請求客戶端的瀏覽器功能的信息。
4
ContentEncoding
獲取或設置實體主體的字符集。
5
ContentLength
指定客戶端發送的內容的長度(以字節爲單位)。
6
ContentType
獲取或設置傳入請求的MIME內容類型。
7
Cookies
獲取客戶端發送的Cookie的集合。
8
FilePath
獲取當前請求的虛擬路徑。
9
Files
獲取客戶端上傳的文件的集合,採用多部分MIME格式。
10
Form
獲取表單變量的集合。
11
Headers
獲取HTTP標頭的集合。
12
HttpMethod
獲取客戶端使用的HTTP數據傳輸方法(如GET
,POST
或HEAD
)。
13
InputStream
獲取傳入的HTTP實體主體的內容。
14
IsSecureConnection
獲取一個值,該值指示HTTP連接是否使用安全套接字(即HTTPS)。
15
QueryString
獲取HTTP查詢字符串變量的集合。
16
RawUrl
獲取當前請求的原始URL。
17
RequestType
獲取或設置客戶端使用的HTTP數據傳輸方法(GET
或POST
)。
18
ServerVariables
獲取Web服務器變量的集合。
19
TotalBytes
獲取當前輸入流中的字節數。
20
Url
獲取有關當前請求的URL的信息。
21
UrlReferrer
獲取有關鏈接到當前URL的客戶端先前請求的URL的信息。
22
UserAgent
獲取客戶端瀏覽器的原始用戶代理字符串。
23
UserHostAddress
獲取遠程客戶端的IP主機地址。
24
UserHostName
獲取遠程客戶端的DNS名稱。
25
UserLanguages
獲取客戶端語言首選項的排序字符串數組。
下表列出了一些重要的方法:
編號
方法
描述
1
BinaryRead
對當前輸入流執行指定字節數的二進制讀取。
2
Equals(Object)
確定指定的對象是否等於當前對象。 (從object繼承。)
3
GetType
獲取當前實例的類型。
4
MapImageCoordinates
將傳入的圖像字段形式參數映射到適當的x
座標和y
座標值。
5
MapPath(String)
將指定的虛擬路徑映射到物理路徑。
6
SaveAs
將HTTP請求保存到磁盤。
7
ToString
返回表示當前對象的字符串。
8
ValidateInput
對通過Cookies
,Form
和QueryString
屬性訪問的集合進行驗證。
Response對象
Response對象表示服務器對客戶端請求的響應。 它是System.Web.HttpResponse
類的一個實例。
在ASP.NET中,響應對象在向客戶端發送HTML文本時不起任何重要作用,因爲服務器端控件具有嵌套的,面向對象的方法來呈現自己。
但是,HttpResponse
對象仍然提供了一些重要的功能,如Cookie
功能和Redirect()
方法。 Response.Redirect()
方法允許將用戶轉移到另一個頁面。
Response對象的屬性和方法
下表提供了Response
對象的一些值得注意的屬性:
編號
屬性
描述
1
Buffer
獲取或設置一個值,指示是否緩衝輸出並在完成響應完成處理後發送。
2
BufferOutput
獲取或設置一個值,指示是否在完成頁面處理完成後緩存輸出併發送。
3
Charset
獲取或設置輸出流的HTTP字符集。
4
ContentEncoding
獲取或設置輸出流的HTTP字符集。
5
ContentType
獲取或設置輸出流的HTTP MIME類型。
6
Cookies
獲取響應cookie集合。
7
Expires
獲取或設置在瀏覽器上緩存的頁面到期之前的分鐘數。
8
ExpiresAbsolute
獲取或設置從緩存中刪除緩存信息的絕對日期和時間。
9
HeaderEncoding
獲取或設置一個編碼對象,該對象表示當前標題輸出流的編碼。
10
Headers
獲取響應標頭的集合。
11
IsClientConnected
獲取一個值,指示客戶端是否仍連接到服務器。
12
Output
啓用將文本輸出到傳出的HTTP響應流。
13
OutputStream
啓用二進制輸出到傳出HTTP內容主體。
14
RedirectLocation
獲取或設置Http Location標頭的值。
15
Status
設置返回給客戶端的狀態行。
16
StatusCode
獲取或設置返回給客戶端的輸出的HTTP狀態碼。
17
StatusDescription
獲取或設置返回給客戶端的輸出的HTTP狀態字符串。
18
SubStatusCode
獲取或設置一個限定響應狀態碼的值。
19
SuppressContent
獲取或設置一個值,指示是否向客戶端發送HTTP內容。
下表列出了一些重要的方法:
編號
方法
描述
1
AddHeader
將HTTP標頭添加到輸出流。提供AddHeader
是爲了與早期版本的ASP兼容。
2
AppendCookie
基礎架構將HTTP cookie添加到內部cookie集合中。
3
AppendHeader
將HTTP標頭添加到輸出流。
4
AppendToLog
將自定義日誌信息添加到InterNET信息服務(IIS)日誌文件。
5
BinaryWrite
將一串二進制字符寫入HTTP輸出流。
6
ClearContent
清除緩衝流中的所有內容輸出。
7
Close
關閉與客戶端的套接字連接。
8
End
將所有當前緩衝的輸出發送到客戶端,停止頁面的執行,並引發EndRequest
事件。
9
Equals(Object)
確定指定的對象(Object
)是否等於當前對象。
10
Flush
將所有當前緩衝的輸出發送到客戶端。
11
GetType
獲取當前實例的類型。
12
Pics
將HTTP PICS-Label標頭附加到輸出流。
13
Redirect(String)
將請求重定向到新的URL並指定新的URL。
14
Redirect(String, Boolean)
將客戶端重定向到新的URL。指定新的URL以及當前頁面的執行是否應該終止。
15
SetCookie
更新cookie
集合中的現有cookie。
16
ToString
返回表示當前對象的字符串。
17
TransmitFile(String)
將指定的文件直接寫入HTTP響應輸出流,而不將其緩衝在內存中。
18
Write(Char)
將一個字符寫入HTTP響應輸出流。
19
Write(Object)
將對象寫入HTTP響應流。
20
Write(String)
將一個字符串寫入HTTP響應輸出流。
21
WriteFile(String)
將指定文件的內容直接寫入HTTP響應輸出流作爲文件塊。
22
WriteFile(String, Boolean)
將指定文件的內容直接寫入HTTP響應輸出流作爲內存塊。
示例
下面的簡單例子有一個文本框控件,用戶可以輸入名字,一個按鈕將信息發送到服務器,一個標籤控件用於顯示客戶端的URL。
打開Visual Studio,創建一個空的網站項目:ServerSide,參考下圖 -
在項目名稱上點擊右鍵,並添加一個Web窗體文件(Defualt.aspx),參考下圖 -
其內容如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>服務器端示例</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="請輸入姓名:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="提交" OnClick="Button1_Click" />
<br />
<br />
<asp:Label ID="Label2" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
打開 Default.cs,添加Button1_Click
事件處理的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(TextBox1.Text))
{
// Access the HttpServerUtility methods through
// the intrinsic Server object.
Label1.Text = "歡迎您, " + Server.HtmlEncode(TextBox1.Text) + ". <br/> 當前 URL 是 " + Server.UrlEncode(Request.Url.ToString());
}
}
}
運行該項目(頁面),得到類似以下結果:
輸入一個名字:Yiibai,然後提交,得到以下結果 -
易百教程移動端:請掃描本頁面底部(右側)二維碼並關注微信公衆號,回覆:"教程" 選擇相關教程閱讀或直接訪問:http://m.yiibai.com 。
上一篇:ASP.NET事件處理 下一篇:ASP.NET服務器控件
加QQ羣啦,易百教程官方技術學習羣
QQ羣名稱
羣號
人數
免費
等級
羣介紹
JAVA技術
227270512
2000
否
LV5
Java基礎,JSP(Servlet),JAVA框架,Java高併發架構,Maven等等
MySQL/SQL
418407075
2000
否
LV5
SQL基礎,MySQL基礎,MySQL存儲過程,視圖,觸發器等等
大數據開發
655154550
2000
否
LV5
Spark,zookeeper,kafka,CDH,hive,fulme,hbase等Hadoop雲計算生態圈技術
Python技術
287904175
2000
否
LV5
Python編程,Python Web,Python大數據,Python爬蟲,自然語言處理等
Linux技術
479429477
2000
是
LV1
Redhat/Centos,Ubuntu,Shell,運維,監控等技術
PHP/Web開發者
460153241
1000
是
LV0
PHP基礎,PHP高級,網站優化/架構,JS,HTML,JQuery,前端等Web開發技術
人工智能
456236082
1000
是
LV0
人工智能,深度學習,算法等技術
Oracle數據庫
175248146
1000
是
LV0
SQL基礎,Oracle基礎,Oracle存儲過程,視圖,觸發器等等
Android開發
159629185
1000
是
LV0
Android開發,Android Studio,Kotlin,Dagger等技術
微軟技術
579821706
1000
是
LV0
C#,ASP.Net,VB.Net,ADO.Net,SQL Server,VBA,Excel等技術