[譯] ASP.NET 生命周期 – ASP.NET 上下文對象(七)

来源:http://www.cnblogs.com/levid-gc/archive/2016/02/19/5198588.html
-Advertisement-
Play Games

使用 HttpRequest 對象 HttpRequest 對象描述的是一個正在被處理的 HTTP 請求。下表列舉了 HttpRequest 中的屬性,它們提供了當前請求的相關信息(HttpRequest 類定義了一些方法和屬性,我們會逐步講解當中的一些屬性)。 表 1 – HttpRequest


使用 HttpRequest 對象

HttpRequest 對象描述的是一個正在被處理的 HTTP 請求。下表列舉了 HttpRequest 中的屬性,它們提供了當前請求的相關信息(HttpRequest 類定義了一些方法和屬性,我們會逐步講解當中的一些屬性)。

表 1 – HttpRequest 類中屬性

名稱 描述
AcceptTypes 返回一個可以被瀏覽器接受的 MIME 類型的字元串數組。
Browser 返回一個可以用來描述瀏覽器功能的 HttpBrowserCapabilities 對象。
ContentEncoding 返回一個 System.Text.Encoding 對象,用來描述對請求數據進行編碼的字元集。
ContentLength 返回請求內容的位元組數。
ContentType 返回請求中內容的 MIME 類型。
CurrentExecutionFilePathExtension 返回請求的 URL 文件擴展組件。
Headers 返回一個包含請求頭的集合。
HttpMethod 返回發起請求的 HTTP 方法(GET, POST, 等等)。
InputStream 返回一個可以讀取請求內容的流。
IsLocal 如果請求源自本機,那麼返回 true。
MapPath(path) 將項目中的文件名轉換成絕對路徑。
RawUrl 返回緊跟著主機名的那部分 URL。換句話說,比如,http://apress.com:80/books/Default.aspx,那麼這個屬性就會返回 /books/Default.aspx。
RequestContext 返回一個請求上下文對象用來提供獲取一個請求的路由信息。
Url 返回一個 System.Uri 對象用來表示請求 URL。
UrlReferrer 返回一個 System.Uri 對象用來表示訪問來源 URL。
UserAgent 返回瀏覽器提供的 user-agent 字元串。
UserHostAddress 返回遠程客戶端的 IP 地址,用一個字元串表示。
UserHostName 返回遠程客戶端的 DNS 名稱。
UserLanguages 返回一個字元串數組表示瀏覽器/用戶偏好的語言。

為了闡述 HttpRequest 類的使用,我已經修改了 Index.cshtml 文件,用來顯示一些請求屬性。

 1 @using SimpleApp.Models
 2 @model List<string>
 3 
 4 @{
 5     Layout = null;
 6 }
 7 
 8 <!DOCTYPE html>
 9 
10 <html>
11 <head>
12     <meta name="viewport" content="width=device-width" />
13     <title>Vote</title>
14     <link href="~/Content/bootstrap.min.css" rel="stylesheet" />
15 </head>
16 <body class="container">
17     <div class="panel panel-primary">
18         @if (ViewBag.SelectedColor == null)
19         {
20             <h4 class="panel-heading">Vote for your favourite color</h4>
21         }
22         else
23         {
24             <h4 class="panel-heading">Change your vote from @ViewBag.SelectedColor</h4>
25         }
26 
27         <div class="panel-body">
28             @using (Html.BeginForm())
29             {
30                 @Html.DropDownList("color", new SelectList(Enum.GetValues(typeof(Color))), "Change a Color", new { @class = "form-control" })
31 
32                 <div>
33                     <button class="btn btn-primary center-block" type="submit">Vote</button>
34                 </div>
35             }
36         </div>
37     </div>
38 
39     <div class="panel panel-primary">
40         <h5 class="panel-heading">Results</h5>
41         <table class="table table-condensed table-striped">
42             <tr><th>Color</th><th>Votes</th></tr>
43             @foreach (Color c in Enum.GetValues(typeof(Color)))
44             {
45                 <tr>
46                     <td>@c</td>
47                     <td>@Votes.GetVotes(c)</td>
48                 </tr>
49             }
50         </table>
51     </div>
52 
53     <div class="panel panel-primary">
54         <h5 class="panel-heading">Request Properties</h5>
55         <table class="table table-condensed table-striped">
56             <tr><th>Property</th><th>Value</th></tr>
57             <tr><td>HttpMethod</td><td>@Request.HttpMethod</td></tr>
58             <tr><td>IsLocal</td><td>@Request.IsLocal</td></tr>
59             <tr><td>RawURL</td><td>@Request.RawUrl</td></tr>
60         </table>
61     </div>
62 </body>
63 </html>
View Code

HttpRequest 對象使用得很頻繁以致一些應用組件,包括 Razor 視圖,都提供了方便的屬性,這樣我們就不需要為了獲取一個 HttpRequest 實例而動用 HttpContext 對象。下表總結了可以獲取到 HttpRequest 對象的方便屬性:

表 2 - 在不同的 ASP.NET/MVC 組件中獲取一個 HttpRequest 對象

組件 技術
Controller 使用方便的 Request 屬性。
View 使用方便的 Request 屬性。
全局應用類 使用方便的 Request 屬性。
模塊 沒有方便的屬性可用。使用 HttpContext.Request 屬性。
處理器 沒有方便的屬性可用。使用 HttpContext.Request 屬性。
全局 總是可以通過靜態的 HttpContext.Current.Request 屬性獲取到 HttpRequest 對象。

 

3.8 Displaying details of the request(1)3.8 Displaying details of the request(2)

圖 1 - 展示請求的詳細信息

除了表 1 中提到的屬性,一個請求中還包括了其他的屬性來獲取數據。我在下表列舉了出來,但是因為模型綁定的緣故,它們不直接在 MVC controllers 中使用,這在 Pro ASP.NET MVC 5 中講到過。然而,這些屬性也有時候在模塊中使用到。

表 3 – HttpRequest 類中定義的額外屬性

名稱 描述
Files 返回一個瀏覽器表單中發送的文件集合。
Form 提供對原始表單數據的訪問。
Params 一個來自查詢字元串,表單欄位,和 cookies 的組合數據項集合。也可以直接在 HttpRequest 對象上使用一個類數組的索引,比如 Request[“myname”] 和 Request.Params[“myname”] 是等同的。
QueryString 返回一個查詢字元串參數的集合;這個屬性通常不直接在 MVC 應用中使用。

 

[根據 Adam Freeman – Pro ASP.NET MVC 5 Platform 選譯]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用Visual Studio寫代碼,經常遇到的一個問題就是切換中文輸入法麻煩,輸入完註釋//,要切換到中文,輸入完引號,要輸入中文,然後還需要切換回來,有沒有? 有時候中文輸入法忽然失效有沒有?明明在中文輸入法狀態下,輸入不了中文,有沒有?
  • 話說有一天,臨近下班無心工作,在網上看各種文章,閱讀到了一篇名為《聊聊大麥網UWP版的首頁頂部圖片聯動效果的實現方法》(傳遞:http://www.cnblogs.com/hippieZhou/p/4755290.html),看到別人評論自己做的產品,頓時來了興趣,閱讀過後,hippieZhou童鞋
  • 近段時間,需要寫一個小功能,就是需要判斷程式是否已經運行。某個程式安裝後,也許被多個用戶運行。那怎樣判斷當前用戶已經運行了此程式了呢?下麵是Insus.NET的做法,就是:《VB.NET WinForm獲取運行程式用戶名》http://www.cnblogs.com/insus/p/5194839.
  • (轉)這裡給大家分享幾個VS版本,都是最終版的,也是中文版的!. Visual Studio 2005:http://pan.baidu.com/s/1c0eudyS Visual Studio 2008:http://pan.baidu.com/s/1i3GJ7pj Visual Studio 2
  • 以下非原創作品,但都是自己看過理解並寫過,記錄下來,以便之後項目的使用或其它用途。 (1)只需要簡單配置單一屬性值: 1 <configuration> 2 <configSections> 3 <!--配置讀取的全名稱--> 4 <section name="simple" type="Confi
  • 使用 HttpResponse 對象 HttpResponse 對象是與 HttpRequest 對象相對應的,用來表示構建中的響應。它當中提供了方法和屬性可供我們自定義響應,有一些在使用 MVC 視圖的時候很少使用到,但是在使用其他組件的時候可能十分有用,比如模塊是處理器。 同 HttpReque
  • HTTP請求工具類,適用於微信伺服器請求,可以自測 代碼; 1 /// <summary> 2 /// HTTP請求工具類 3 /// </summary> 4 public class HttpRequestUtil 5 { 6 #region 請求Url 7 8 #region 請求Url,不發
  • 在工作中我們經常會遇到格式轉換的問題,有的時候是將JSON轉換成DataTable、DataSet或是List等,也有可能將DataTable、DataSet或是List轉換成JSON的,抽了點時間把這些方法整合了一下,希望對大家有所幫助,如果有什麼問題請指出來,共同探討。 代碼: 1 using
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...