网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

浅谈ASP.NET核心对象

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/07
面我来说说一些不被人注意的细节。

HttpRequest的QueryString, Form属性的类型都是NameValueCollection,它个集合类型有一个特点:允许在一个键下存储多个字符串值。

以下代码演示了这个特殊的现象:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3. string[] allkeys = Request.QueryString.AllKeys;  
  4. if( allkeys.Length == 0 )  
  5. Response.Redirect(  
  6. Request.RawUrl + "?aa=1&bb=2&cc=3&aa=" + HttpUtility.UrlEncode("5,6,7"), true);  
  7. StringBuilder sb = new StringBuilder();  
  8. foreachstring key in allkeys )  
  9. sb.AppendFormat("{0} = {1}<br />",  
  10. HttpUtility.HtmlEncode(key), HttpUtility.HtmlEncode(Request.QueryString[key]));  
  11. this.labResult.Text = sb.ToString();  

页面最终显示结果如下(注意键值为aa的结果):

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/7/9A95414645.gif" />

说明:

1. HttpUtility.ParseQueryString(string)这个静态方法能帮助我们解析一个URL字符串,返回的结果也是NameValueCollection类型。

2. NameValueCollection是一个不区分大小写的集合。

HttpRequest有一个Cookies属性,MSDN给它的解释是:“获取客户端发送的 Cookie 的集合。”,这次MSDN的解释就不完全准确了。

请看如下代码:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3. string key = "Key1";  
  4. HttpCookie c = new HttpCookie(key, DateTime.Now.ToString());  
  5. Response.Cookies.Add(c);  
  6. HttpCookie cookie = Request.Cookies[key];  
  7. if( cookie != null )  
  8. this.labResult.Text = cookie.Value;  
  9. Response.Cookies.Remove(key);  

这段代码的运行结果就是【能显示当前时间】,我就不贴图了。

如果写成如下形式:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3. string key = "Key1";  
  4. HttpCookie cookie = Request.Cookies[key];  
  5. if( cookie != null )  
  6. this.labResult.Text = cookie.Value;  
  7. HttpCookie c = new HttpCookie(key, DateTime.Now.ToString());  
  8. Response.Cookies.Add(c);  
  9. Response.Cookies.Remove(key);  

此时就读不到Cookie了。这也提示我们:Cookie的读写次序可能会影响我们的某些判断。

HttpRequest还有二个用于方便获取HTTP数据的属性Params,Item ,后者是个默认的索引器。

这二个属性都可以让我们方便地根据一个KEY去【同时搜索】QueryString、Form、Cookies 或 ServerVariables这4个集合。通常如果请求是用GET方法发出的,那我们一般是访问QueryString去获取用户的数据,如果请求是用POST方法提交的,我们一般使用Form去访问用户提交的表单数据。而使用Params,Item可以让我们在写代码时不必区分是GET还是POST。这二个属性唯一不同的是:Item是依次访问这4个集合,找到就返回结果,而Params是在访问时,先将4个集合的数据合并到一个新

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号