Request、Request.Form和Request.QueryString的區別

 

Request、Request.Form和Request.QueryString的區別html

Request.Form:獲取以POST方式提交的數據(接收Form提交來的數據);web

Request.QueryString:獲取地址欄參數(以GET方式提交的數據)ide

Request:包含以上兩種方式(優先獲取GET方式提交的數據),它會在QueryString、Form、ServerVariable中都搜尋一遍。函數

       並且有時候也會獲得不一樣的結果。若是你僅僅是須要Form中的一個數據,可是你使用了Request而不是Request.Form,那麼程序將在QueryString、ServerVariable中也搜尋一遍。若是正好你的QueryString或者ServerVariable裏面也有同名的項,你獲得的就不是你本來想要的值了。編碼

 

ASP.NET -- Request.Form詳解code

一、單個值
Request.Form["fieldName"];orm

二、多個值的狀況下
String[] tempArray;
tempArray = Request.Form.GetValues("fieldName");
Response.Write(tempArray[0]);    //打印第一個成員htm

三、若是提交到其餘頁面呢
WEB FORM中表單是提交回當前頁面處理的。若是你要傳到另外一個頁面處理,能夠用:
Server.Transfer("b.aspx", true);blog

這樣,全部的表單字段,QueryString參數均可以在b.aspx中獲得。get

id = Request.Params["id"];
或 id = Request.QueryString["id"];
或 id = Request.Form["id"];

 

[轉]ASP.NET接收Request.Form傳值爲亂碼解決辦法

        曾經涉及到用URL傳遞漢字總少一個字,後來得知是UTF-8編碼的問題,最好經過Server.Urlencode後再傳遞。

此次遇到aspx頁面接收html頁面裏的一個input值,經過Request.Form["test"]獲得的是亂碼。考慮可能一樣是編碼問題,首先想把傳遞過來的值由UTF-8轉換爲GB2312,因而寫了個轉換函數:

不知是函數不對,仍是沒有對症,轉換後的值仍爲亂碼(就是一堆問號)。

       //content是要轉編碼的內容,sourceCode是原來的編碼名稱,targetCode是要轉換成的編碼名稱

        public static string StrConvCode(string content,string sourcCode,string targetCode)
         {
             Encoding source =Encoding.GetEncoding(sourcCode);
             Encoding target = Encoding.GetEncoding(targetCode);
             byte[] bSource= source.GetBytes(content);
             byte[] bTarget = Encoding.Convert(source, target, bSource);
             return target.GetString(bTarget);
         }

再一次查詢,後來偶爾發如今vs2003裏web.config裏有<globalization responseEncoding="gb2312" requestEncoding="gb2312"/>,考過來,ok好用了。在網上看到有的在globalization 裏寫的更多,但我用的時候會產生頁面亂碼,但傳過來的值是正確的狀況。

相關文章
相關標籤/搜索