ASP.Net传值方式:QueryString > Form > Cookies > ServerVariables

在ASP.NET编程中,有三个比较常见的来自于客户端的数据来源:QueryString, Form, Cookie,Session。 我们可以在HttpRequest中访问这四大对象。

QueryString: 获取包含在URL中的一些参数; 获取get方式提交的表单数据

Form: 获取post方式提交的表单数据

Cookie: 获取一些会话状态以及其它的用户个性化参数信息。

Session:Session的值存储在服务器端,对用户而言是不可见的,其值可以被一用户的多个页面共享。当用户停止操作一段时间后,session将被释放,具体的的时间可以通过代码来指定。

除了这四大对象,HttpRequest还提供ServerVariables来让我们获取一些来自于Web服务器变量。

 

一般情况下,如果我们在事先就能明确知道某个参数是来源于哪个集合,那么直接访问那个集合,问题也就简单了。然而,更常见的数据来源通常只会是QueryString, Form ,而且尤其是当在客户端使用Jquery的$.ajax()这类技术时,可以很随意地将参数放到QueryString或者是Form中,那么,服务端通常为了也能灵活地应对这一现况,可以使用Request[]与Request.Params[] 这二种方式来访问这些来自于用户提交的数据。然而 Request[]与Request.Params[]有什么差别??

 

 

Request 实现方式

这段代码的意思是:Request根据指定的key,依次访问QueryString,Form,Cookies,ServerVariables这4个集合,如果在任意一个集合中找到了,就立即返回。

以下是Request["id" ]的内部实现代码:

public string this[string key]
    {
       
get
        {
            string str =
this.QueryString[key];
            if (str != null)
           
{
                return str;
            }
            str =
this.Form[key];
            if (str != null)
           
{
                return str;
            }
            HttpCookie
cookie = this.Cookies[key];
            if (cookie != null)
           
{
                returncookie.Value;
            }
            str =
this.ServerVariables[key];
            if (str != null)
           
{
                return str;
            }
            return
null;
        }
    }


 

 

Request.Params 的实现方式

它的实现方式是:Request.Params先判断_params这个Field成员是否为null,如果是,则创建一个集合,并把QueryString,Form,Cookies,ServerVariables这4个集合的数据全部填充进来,以后的查询都直接在这个集合中进行。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值