Jam*_*ing 12 c# asp.net parameters request request.querystring
我搜索了SO并找到了类似的问题,但没有人比较这三个问题.这让我感到惊讶,所以如果有人知道,请指点我.
有许多不同的方法来解析请求的查询字符串......"正确"方式(IMO)应该处理空值/缺失值,但也适当地解码参数值.以下哪项是最好的方法?
方法1
string suffix = Request.QueryString.Get("suffix") ?? "DefaultSuffix";
Run Code Online (Sandbox Code Playgroud)
方法2
string suffix = Request.QueryString["suffix"] ?? "DefaultSuffix";
Run Code Online (Sandbox Code Playgroud)
方法3
NameValueCollection params = HttpUtility.ParseQueryString(Request.RawUrl);
string suffix = params.Get("suffix") ?? "DefaultSuffix";
Run Code Online (Sandbox Code Playgroud)
方法4
NameValueCollection params = HttpUtility.ParseQueryString(Request.RawUrl);
string suffix = params["suffix"] ?? "DefaultSuffix";
Run Code Online (Sandbox Code Playgroud)
问题:
Request.QueryString["suffix"]如果没有指定后缀,会返回null吗?(令人尴尬的基本问题,我知道)
是否HttpUtility.ParseQueryString()提供Request.QueryString直接访问的任何额外功能?
MSDN文档列出了这个警告:
The ParseQueryString method uses query strings that might contain user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.
但我不清楚是否ParseQueryString()应该使用这种方法处理它,或者因为它而暴露于安全漏洞......这是什么?
ParseQueryString() 默认使用UTF8编码...默认情况下,所有浏览器都以UTF8编码查询字符串吗?
ParseQueryString()如果指定了多个值,则将逗号分隔值...也Request.QueryString()会这样做,或者如果不这样做会发生什么?
哪种方法能正确解码"%2b"为"+"?
再次展示我的Windows开发根源......如果我不太想这些东西,我会成为一个更快的开发人员......:P
方法#1和#2真的是一样的.(我认为该.Get()方法是为了语言兼容性而提供的.)
ParseQueryString返回一些功能相当的东西Request.Querystring.当您拥有原始URL并且没有其他方法可以从中解析查询字符串参数时,通常会使用它.Request.Querystring这样做对你来说,所以在这种情况下,它不需要.
你不能离开"suffix".您必须传递字符串或索引号.如果你[]完全放弃,你会得到整体NameValueCollection.如果你的意思是if "suffix"不是一个QueryString值那么是; null如果你打电话,你会得到的Request.QueryString["suffix"].
不会.您最有可能使用它的时间是您有一个外部URL并希望从中解析查询字符串参数.
ParseQueryString它不处理它...它既不从直拉式的值Request.QueryString.对于ASP.NET,您通常将表单值作为控件的值来处理,这就是ASP.NET通常为您"处理"这些内容的地方.换句话说:不要相信用户输入.无论什么框架正在为你做什么.
我不知道(我认为没有).不过,我认为你正在阅读是告诉你,ParseQueryString是返回 UTF-8编码的文本-不论它是如此编码的,当它走了进来.
再说一次:ParseQueryString回归基本上与你得到的相同Request.QueryString.事实上,我认为ParseQueryString是内部使用提供Request.QueryString.
他们会产生等价物; 他们都将正确解码提交的值.如果你有URL:http://site.com/page.aspx?id=%20Hello那么调用Request.QueryString["id"]返回值将是" Hello",因为它会自动解码.
| 归档时间: |
|
| 查看次数: |
12175 次 |
| 最近记录: |