今天才注意到HttpRequest.Params与HttpRequest.Item这两个玩意竟然有微妙的不同。上午的时候同事被坑了发现这玩意的说明还真微妙。
场景再现:
前台提交一个POST请求到后台,此时post的url中带有参数ID,而表单数据刚好也有一个ID域。由于之前代码编写的时候都采用Request["id"],故而也一切正常——直到今天他写成了Request.Params["id"]……
结果如下:
按照MSDN的说法,HttpRequest.Item是从 QueryString、Form、Cookies 或 ServerVariables 集合获取指定的对象。而相对的,HttpRequest.Params是获取 QueryString、Form、Cookies 和 ServerVariables 项的组合集合。一个或一个和,MS的语文果然不是体育老师教的。于是HttpRequest.Item找到第一个ID后就直接返回了,而HttpRequest.Params将所有的ID都取了出来。看来不顺手婊下MS是不行了……