mer*_*erk 23 c# asp.net url url-rewriting c#-4.0
我正在使用一个页面,我有一个网址:
/ directory/company/manufacturer
使用一些重写规则,这将被重写
使用/ directory/company/dunkin%26donuts /进行测试
一些制造商的名字中有一个&符号.所以我想我可以用更换&符号%26.但是,当我调试代码并将鼠标悬停在Request.QueryString它上面时,显示我{qq=company&manf=dunkin&donuts&cond=}并Request.QueryString["manf"]给我'dunkin'
如果我用%24($)而不是&符号,徘徊过来Request.QueryString给我
{qs=company&manf=dunkin%24donuts&cond=}并Request.QueryString["manf"]给我'dunkin $ donuts'
我不明白这里的不同行为.为什么在您实际请求特定密钥之前,似乎对&符号的url编码值进行了解码,但是另一个url编码的字符(如美元符号)只有在您实际请求该特定密钥后才会被解码?
这是最近的变化吗?我一直以为Request.QueryString[key]没有首先解码就返回实际文本.或者它与网址重写有什么关系?
mat*_*mmo 36
UrlDecode()当您通过键索引(即(Request.QueryString["key"]))访问属性时,ASP.NET会自动调用.
如果你想要它编码,只需:
HttpUtility.UrlEncode(Request.QueryString["key"]);
特别是在&符号方面,这是一个特殊情况字符,因为它已经被用作查询字符串分隔符.URL编码和解码&符号应该总是给你&这个原因.