搜尋
首頁後端開發C#.Net教程總結Asp.net內建物件之Request物件使用實例

Request物件主要用於獲取來自客戶端的數據,如用戶填入表單的數據、保存在客戶端的Cookie等,本文將圍繞Request對象,講解其的主要作用:讀取窗體變量、讀取查詢字串變數、取得Web伺服器端的系統資訊。取得客戶端瀏覽器資訊等等,有興趣的朋友可以了解下

前言:
Request物件主要用於取得來自客戶端的數據,如使用者填入表單的資料、保存在客戶端的Cookie等。

一、Request物件概述

1、主要屬性

# HttpMethod 取得客戶端所使用的HTTP資料傳輸方法(如:get、post或) Item#取得Cookies、Form、QueryString或ServerVariables集合中指定的物件 Params 取得Cookies、Form、QueryString或ServerVariables項目的組合集合 取得目前要求的虛擬路徑 取得具有URL副檔名的資源的附加路徑資訊 取得目前正在執行的伺服器應用程式的根目錄的實體檔案系統路徑 取得與請求的URL相對應的實體檔案路徑# 取得HTTP查詢字串變數集合。此屬性值為:NameValueCollection對象,它包含由客戶端傳送的查詢字串變數集合 取得或設定客戶端使用HTTP資料傳輸的方式(get或post)
 ApplicationPath  取得伺服器上asp.net應用程式的虛擬應用程式根路徑
 Browser  取得有關正在請求的客戶端的瀏覽器功能的訊息,此屬性值為:HttpBrowserCapabilities對 象
 ContentEncoding  取得或設定實體主體的字元集。此屬性值為表示客戶端的字元集Encoding物件
 ContentLength  指定客戶端傳送的內容長度,以位元組為單位 
# ContentType  取得或設定傳入請求的MIME內容類型。
 Cookies  取得客戶端傳送的Cookie集合,此屬性值為表示客戶端的Cookie變數的 HttpCookieCollection物件
 CurrentExecutionFilePath  取得目前要求的虛擬路徑
 FilePath  取得目前請求的虛擬路徑
 Files  取得用戶端上載的檔案集合。此屬性值為HttpFileCollection對象,表示客戶端所載的檔案集合
# Form  取得窗體變數集合
head
# Path
# PathInfo
 PhysicalApplicationPath
 PhysicalPath
 QueryString
# RequestType
###### ServerVariables###### 取得Web伺服器變數的集合########### TotalBytes###### 取得目前輸入流的位元組數############ Url###### 取得目前請求URL的資訊############ UserHostAddress#### ## 取得遠端客戶端的IP主機位址############ ####### ################ ####### ############

2、主要方法

(1)MapPath(VirtualPath):將目前要求的URL中的虛擬路徑virtualPath對應到伺服器上的實體路徑。參數virtualPath指定目前請求的虛擬路徑,可以是絕對路徑或相對路徑。此方法的回傳值為virtualPath指定的伺服器實體路徑。

(2)SaveAs (Filename,includeHeaders):將http請求儲存到磁碟。參數filename指定實體磁碟機路徑,includeHeaders是一個布林值,指定是否應將HTTP標頭儲存到磁碟。

二、Request物件的應用

1.讀取窗體變數四種方式

(1) .使用Request.Form屬性讀取窗體變數
(2).使用Request.QueryString屬性讀取窗體變數
(3).使用Request.Params屬性讀取窗體變數
(4 ).透過伺服器控制項的屬性直接讀取窗體變數

(1).使用Request.Form屬性讀取窗體變數

HtmlForm控制項的Method屬性的預設值為post。在這種情況下,當使用者提交網頁時,表單資料將以HTTP標頭的形式傳送到伺服器端。此時,可以使用Request物件的Form屬性來讀取窗體變數。如:txtUserName和txtPassword的文字方塊控件,則可以透過以下形式來讀取它們的值: Request.Form["txtUserName"] ;Request.Form["txtPassword"]

(2)使用Request .QueryString屬性讀取窗體變數

如果將HtmlForm控制項的Method屬性設為get,則當使用者提交網頁時,表單資料將附加在網址後面傳送到伺服器端。在這種情況下,可以使用Request物件的QueryString屬性讀取窗體變數。 Request.QueryString["txtUserName"] ;Request.QueryString["txtPassword"]

(3)使用Request.Params屬性讀取窗體變數

不論HtmlForm控制項的Method屬性取什麼值,都可以使用Request物件的Params屬性來讀取窗體變數的內容,如Request.Params["txtPassword"]或Request.["txtPassword"],優先取得GET方式提交的數據,它會在QueryString、 Form、ServerVariable中都以先後順序搜尋一遍。

Request:包含以上兩種方式(優先取得GET方式提交的資料),它會在QueryString、Form、ServerVariable中都按先後順序搜尋一遍。 Request.Params是所有post和get傳過來的值的集合,request.params其實是一個集合,它依次包括request.QueryString、request.Form、request.cookies和request.ServerVariable。

注意:當使用Request.Params的時候,這些集合項目中最好不要有同名項。如果只是需要Form中的一個數據,但卻使用了Request而不是Request.Form,那麼程式將在QueryString、ServerVariable中也搜尋一遍。如果剛好QueryString或是ServerVariable裡面也有同名的項,那麼得到的就不是想要的值了。

(4)透過伺服器控制項的屬性直接讀取窗體變數

除了以上3種方式之外,也可以透過伺服器控制項的屬性來直接讀取窗體變量,這是獲取表單資料的最常用、最簡單的方式。例如: txtUserName.Text 

2.讀取查詢字串變數

在瀏覽網頁時,經常看到瀏覽器網址列中顯示“xxx.aspx?id=8018”之類的URL,其中xxx.aspx表示要訪問的.aspx網頁,問號(?)後面跟的內容就是查詢字串,其作用是將變數的名稱和值傳送給這個ASP.NET檔案來處理。查詢字串變數可以透過以下幾種方式產生。

(1).若將HtmlForm控制項的Method屬性設為get,則當使用者提交網頁時,窗體資料將作為查詢字串變數附在網址後面被傳送到伺服器端。
(2).使用標記或HyperLink控制項建立超文本連結時,可以將查詢字串放在目標URL後面,並使用問號「?」來分隔URL與查詢字串
(3).呼叫Response.Redirect方法時,若在網址參數後面附有變數名稱/值對,則開啟目標網頁時這些變數值附在該網址後面被傳送到伺服器端。
(4).在瀏覽器網址列輸入請求URL時,在URL後輸入問號「?」和查詢字串。例如: http://…/t.aspx?Id=8018

在上述場合,皆可透過Request.QueryString屬性來擷取查詢字串變數。

如下程式碼:

//在登陆页面 protected void Button1_Click(object sender, EventArgs e) { //登陆 //if (txtUserName.Text == "admin" && txtPwd.Text == "123") //{ // Session["Info"] = "随便一个值"; // Response.Redirect("Request2_test.aspx?Info=" + txtUserName.Text); //} //else //{ // Response.Redirect("Request2_test.aspx?error=登陆失败!"); //} /***********************************方法2****************************************/ //或者 if (txtUserName.Text == "admin" && txtPwd.Text == "123") { Response.Redirect("Request2_test.aspx?Info=" + txtUserName.Text + "&check=1"); } else { Response.Redirect("Request2_test.aspx?error=登陆失败!"); } }

在驗證頁面

 程式碼如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
//验证页面 
//if (Session["Info"] != 
null
 && Session["Info"].ToString() == "随便一个值") 
//{ 
// Response.Write("登陆成功!<br>" + Request.QueryString["Info"] + ",欢迎访问本站"); 
// //Response.Write("登陆成功!<br>" + Request["Info"] + ",欢迎访问本站"); 
// //Response.Write("登录成功!<br>"+Request.Form["username"]+",欢迎访问本站"); 
//} 
//else 
//{ 
// Response.Write("登陆失败"); 
//} 
/***************************************方法2**********************************/ 
if (Convert.ToInt32(Request["check"]) == 1) 
{ 
Response.Write("登陆成功!<br>" + Request.QueryString["Info"] + ",欢迎访问本站"); 
} 
else 
{ 
Response.Write("登陆失败"); 
} 
}

3.取得Web伺服器端的系統資訊

Request物件使用ServerVariables集合物件保存伺服器端系統訊息,這些訊息變數包含在HTTP頭部中隨HTTP請求一起傳送。使用Request物件的ServerVariables集合物件取得環境變數的語法如下: Request.ServerVariables[環境變數名稱]

ServerVariables集合物件中保存的常用資訊變數如下:

 代码如下:

Response.Write(Request.ServerVariables["LOCAL_ADDR"]);//远端服务器的地址 Response.Write("<br>"); Response.Write(Request.ServerVariables["Remote_ADDR"]);//浏览器所在主机的IP地址 Response.Write("<br>"); Response.Write(Request.Browser.Type.ToString());//浏览器的类型 Response.Write("<br>"); Response.Write(Request.Browser.Platform.ToString());//浏览器所在的平台 Response.Write("<br>"); Response.Write(Request.ServerVariables["url"]);

4.取得客户端浏览器信息

通过Request对象的Browser属性得到。需要利用Browser属性生成一个HttpBrowserCapabilities类型的对象实例。HttpBrowserCapabilities类具有的常用属性如下:

 代码如下:

Response.Write("浏览器的类型是:" + Request.Browser.Browser.ToString()+"<br>"); Response.Write("浏览器的版本是:" + Request.Browser.Version.ToString()+"<br>"); Response.Write("浏览器的所在平台是:" + Request.Browser.Platform.ToString()+"<br>"); Response.Write("浏览器是否支持框架:" + Request.Browser.Frames.ToString()+"<br>"); Response.Write("浏览器是否支持Cookies:" + Request.Browser.Cookies.ToString()+"<br>"); Response.Write("浏览器是否支持Javascript:" + Request.Browser.JavaScript.ToString()+"<br>");

5.读取客户端Cookie

Cookie是在HTTP协议下服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在用户浏览器上的小文本文件,它可以包含有关用户的信息,这些信息以名/值对的形式储存在文本文件中。无论何时,只要用户连接接到服务器,Web站点就可以访问Cookie信息。Cookie保存在用户的Cookie文件中,当下一次用户返回时,仍然可以对它进行调用。

Cookies集合是由一些Cookie对象组成的。Cookie对象的类名为HttpCookie。HttpCookie类的主要属性如下:

使用Cookie时,应注意以下几点

[1].使用Cookie保存客户端浏览器请求服务器页面的请求信息时,保存时间的长短取决于Cookie对象的Expires属性,可以根据需要来设置。若未设置Cookie的失效日期,则它们仅保存到关闭浏览器为止。若将Cookie对象的Expires属性设置为DateTime.MaxValue,则表示Cookie永远不会过期。

[2].Cookie存储的数据量有所限制,大多数浏览器支持的最大容量为4096字节,因此不要用Cookie来保存大量数据。

[3].  并非所有浏览器都支持Cookie,并且数据是以明文形式保存在客户端计算机中,因此最好不要用Cookie来保存敏感的未加密数据。

[4].在ASP.NET中有两个Cookies集合,即:Response对象的Cookies集合和Request对象的Cookies集合,但两者的作用有所不同,通过前者可以将Cookie写入客户端,通过后者可以读取存储在客户端的Cookie。

如下操作:

示例如下:

代码如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
HttpCookie c1=Request.Cookies["UserName"]; 
HttpCookie c2 = Request.Cookies["Password"]; 
if (c1 != null || c2 != null) 
{ 
//当保存完Cookie之后(也就是说"保存或永久保存"),这个才能输出,当第二次用统一浏览器打开该网站的时候就会输出 
Response.Write(c1.Value + "欢迎光临"); 
} 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
//提交 
if (TextBox1.Text == "admin" && TextBox2.Text == "123") 
{ 
Response.Write("欢迎光临"+TextBox1.Text); 
Response.Cookies["UserName"].Value = TextBox1.Text; 
Response.Cookies["Password"].Value = TextBox2.Text; 
if (Dro
pDo
wn
List
1.SelectedItem.Text == "永久保存") 
{ 
//默认cookies失效时间是直到关闭浏览器 
//Cookie保存永久 
Response.Cookies["UserName"].Expires = DateTime.MaxValue; 
Response.Cookies["Password"].Expires = DateTime.MaxValue; 
} 
else 
{ 
//Cookie永不保存 
Response.Cookies["UserName"].Expires = DateTime.Now; 
Response.Cookies["Password"].Expires = DateTime.Now; 
} 
} 
}

当我们再次打开该网站(同一浏览器)的时候,就会弹出“admin欢迎光临"

【相关推荐】

1. 谈谈Request和Response这两个对象的使用

2. 分享一个Request对象小案例

3. 分享asp中request对象五个获取客户端资料的方法

4. 详解ASP.NET 系统对象之Request

以上是總結Asp.net內建物件之Request物件使用實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
從網絡到桌面:C#.NET的多功能性從網絡到桌面:C#.NET的多功能性Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#.NET與未來:適應新技術C#.NET與未來:適應新技術Apr 14, 2025 am 12:06 AM

C#和.NET通過不斷的更新和優化,適應了新興技術的需求。 1)C#9.0和.NET5引入了記錄類型和性能優化。 2).NETCore增強了雲原生和容器化支持。 3)ASP.NETCore與現代Web技術集成。 4)ML.NET支持機器學習和人工智能。 5)異步編程和最佳實踐提升了性能。

c#.net適合您嗎?評估其適用性c#.net適合您嗎?評估其適用性Apr 13, 2025 am 12:03 AM

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

.NET中的C#代碼:探索編程過程.NET中的C#代碼:探索編程過程Apr 12, 2025 am 12:02 AM

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。

C#.NET:探索核心概念和編程基礎知識C#.NET:探索核心概念和編程基礎知識Apr 10, 2025 am 09:32 AM

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

測試C#.NET應用程序:單元,集成和端到端測試測試C#.NET應用程序:單元,集成和端到端測試Apr 09, 2025 am 12:04 AM

C#.NET應用的測試策略包括單元測試、集成測試和端到端測試。 1.單元測試確保代碼的最小單元獨立工作,使用MSTest、NUnit或xUnit框架。 2.集成測試驗證多個單元組合的功能,常用模擬數據和外部服務。 3.端到端測試模擬用戶完整操作流程,通常使用Selenium進行自動化測試。

高級C#.NET教程:ACE您的下一次高級開發人員面試高級C#.NET教程:ACE您的下一次高級開發人員面試Apr 08, 2025 am 12:06 AM

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

C#.NET面試問題和答案:提高您的專業知識C#.NET面試問題和答案:提高您的專業知識Apr 07, 2025 am 12:01 AM

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。