查看了QueryString的定义类型是NameValueCollection,就误以为这是NameValueCollection的重写了ToString()的方法,于是放心地将代码转移到了业务逻辑层。因为还要重构查询参数,因此重新构建了一个NameValueCollection,并想当然地用ToString()的结果作为Key。但实际运行之后发现,每次的结果都一样的,都是第一次的查询结果。经调试,发现NameValueCollection的ToString()方法并没有重新,还是返回的是“System.Collections.Specialized.NameValueCollection”。
先看看调试时的情况,发现QueryString的实际类型是System.Web.HttpValueCollection,该类型继承自NameObjectCollectionBase,跟NameValueCollection的基类是一样的。那么最有可能的就是QueryString直接继承了NameValueCollection,并且重写了ToString()的方法。
普通NameValueCollection的表现如下
根据以上判断基本为什么QueryString表面上看起来是NameValueCollection但又实际上表现出不同的ToString表现。
接下来继续了解一下System.Web.HttpValueCollection是何方神圣。该类用起来似乎很方便,也尝试在代码中使用,但提示找不到类。在MSDN中也没有明确该类的记录,可以基本判定为私有的类型或者受保护的。搜索之后发现,该类是的完整定义是System.Web.HttpValueCollection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,只能通过反射的方式访问或修改该类型。因此想用这个类的话,基本上是比较麻烦,不太值得。但是在一般开发者眼中,都希望查询字符串的和NameValueCollection能很顺畅的进行呼唤,通过ToString()的简单方式就能获得。目前要实现两者的转换有以下方式
从查询字符串内容转换到NameValueCollection
HttpUtility.ParseQueryString(querystring);(参考http://msdn.microsoft.com/zh-cn/library/ms150046(v=VS.90).aspx),这种方式得到的就是正品QueryString,ToString()后为所实际的值。
从NameValueCollection转化的为查询字符串
只能遍历NameValueCollection,然后自个拼出一个查询字符串了
复制代码 代码如下:
foreach (string key in c.Keys)
{
sb.AppendFormat("{0}={1}", key, c[key]);
}
但实际上我们希望有更自然的方式,因为往往我们跟乐于操作可读写的NameValueCollection,而不是只读的QueryString。
老外对此也提出了意见,具体可参考
http://msmvps.com/blogs/paulomorgado/archive/2008/07/15/make-the-httpvaluecollection-class-public-and-move-it-to-system-dll.aspx
相关推荐:
一键网站制作软件,义乌购一件代发流程?
通过JS 获取Mouse Position(鼠标坐标)的代码
ASP 三层架构 Error处理类
union组合结果集时的order问题
张家港网站制作公司,张家港有哪几家适合团购的专业网站?
公司网站设计制作厂家,怎么创建自己的一个网站?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
oracle SQL解析步骤小结
网站制作需要会哪些技术,建立一个网站要花费多少?
Flex Data Binding详解
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Tab页界面,用jQuery及Ajax技术实现
php面向对象全攻略 (十七) 自动加载类
iisapp.vbs iis pid了解对应的网站或应用池
高端网站制作公司,怎样注册网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
动图在线制作网站有哪些,滑动动图图集怎么做?
昆明网站制作美食店,昆明美食攻略?
免费的h5制作网站模板,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
网站标题制作软件,网页标题栏怎么设置?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
深圳网站制作平台,深圳市做网站好的公司有哪些?
php面向对象全攻略 (四)构造方法与析构方法
三星网站视频制作教程下载,三星w23网页如何全屏?
js 获取中文拼音,Select自动匹配字母获取值的代码
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
预防黑客侵入你正在使用的Win系统(隐藏帐号)
找人制作网站多少钱,网上怎么找人帮忙?
extjs 学习笔记(二) Ext.Element类
网站制作员失业,怎样查看自己网站的注册者?
网站制作报价单怎么做,澳洲悉尼大学怎样缴学费?
PHP网站制作软件,有什么学习php比较好的免费网站?
自助网站制作软件,个人如何自助建网站?
PHP 字符截取 解决中文的截取问题,不用mb系列
移民网站制作流程,怎么看加拿大移民官网?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
javascript 面向对象编程 万物皆对象
海南网站制作公司有哪些,海口网是哪家的?
JavaScript中Object和Function的关系小结
写出高性能SQL语句的35条方法分析
Javascript 数组添加一个 indexOf 方法的实现代码
制作网页的网站有哪些,电脑上怎么做网页?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
Mootools 1.2教程(21)——类(二)
通过HSODBC访问mysql的实现步骤
IE,firefox(火狐)浏览器无提示关闭窗口js实现代码小结
asp 通用修改和增加函数代码
公众号网站制作网页,微信公众号怎么制作?
想学网站制作怎么学,建立一个网站要花费多少?