Request、Request.Form和Request.QueryString的区别

Request.Form:获取以POST方式提交的数据(接收Form提交来的数据);

Request.QueryString:获取地址栏参数(以GET方式提交的数据)

Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。

而且有时候也会得到不同的结果。如果你仅仅是需要Form中的一个数据,但是你使用了Request而不是Request.Form,那么程序将在QueryString、ServerVariable中也搜寻一遍。如果正好你的QueryString或者ServerVariable里面也有同名的项,你得到的就不是你原本想要的值了。






ASP.NET -- Request.Form详解

1、单个值
Request.Form["fieldName"];

2、多个值的情况下
String[] tempArray;
tempArray = Request.Form.GetValues("fieldName");
Response.Write(tempArray[0]); //打印第一个成员

3、如果提交到其他页面呢
WEB FORM中表单是提交回当前页面处理的。如果你要传到另一个页面处理,可以用:
Server.Transfer("b.aspx", true);

这样,所有的表单字段,QueryString参数都可以在b.aspx中得到。

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);

}