我的网页网址非常简单EmailToFriend.aspx?PID=5&Lang=en-US
string _pid= Server.UrlDecode(Request.QueryString["PID"]);
string _lang = Server.UrlDecode(Request.QueryString["Lang"]);
结果:
_pid=5
_lang= null
我正在尝试获取QueryString
和PID
的{{1}}值,但是当它存在于url中时,它会返回null值,即= en-US
调试时我注意到它为下面的代码行显示了Lang
的网址
PID=5&%3bLang=en-US
我不确定有什么问题,以及为什么显示string _lang = Server.UrlDecode(Request.QueryString["Lang"]);
来代替%3b
如何解决此问题,以便获取QueryString ;
如果我在我的网址中仅使用lang
,那么它可以正常使用&
问题只会在我编码url&尝试解码它
文章参考http://msdn.microsoft.com/en-us/library/6196h3wt%28v=vs.110%29.aspx
对我不起作用..
答案 0 :(得分:1)
首先,来自Wikipedia:查询字符串是包含要传递给Web应用程序的数据的(URL)的一部分,它的编码如下:
field1=value1&field2=value2&field3=value3...
'='
分隔。'&'
... 因此,如果你有一个网址如下:
EmailToFriend.aspx?PID=5&Lang=en-US
您有一个包含两个字段值对的查询字符串,以&符号('&'
)分隔:
"PID" => "5"
和"amp;Lang" => "en-US"
...
现在,回到你的问题:
我正在尝试获取
QueryString
和PID
的{{1}}值,但是当它存在于url中时,它会返回null值,即= en-US
Lang
始终返回null的原因是,qiven网址中不存在该密钥,而密钥Lang
的值为amp;Lang
。您可以使用以下代码验证这一点:
en-US
如何解决此问题,以便获取QueryString
的值string _amplang = Server.UrlDecode(Request.QueryString["amp;Lang"]);
你自己基本上已经回答了这个问题。它通过修复您的URL并使用正确形式的查询字符串:lang
文章参考http://msdn.microsoft.com/en-us/library/6196h3wt%28v=vs.110%29.aspx 对我不起作用..
它确实有效,但不幸的是你做错了。 &符号(EmailToFriend.aspx?PID=5&Lang=en-US
)的URL编码值为'&'
而非%26
。另一方面,&符号(&
)的 HTML编码值为'&'
。您可能正在尝试对HTML编码的值进行URL解码。
例如,假设您有以下网址:
&
如果您运行以下代码:
EmailToFriend.aspx?PID=5&Lang=en-US&Url=EmailToFriend.aspx%3fPID%3d5%26Lang%3den-US
您将拥有以下值:
string _pid= Server.UrlDecode(Request.QueryString["PID"]);
string _lang = Server.UrlDecode(Request.QueryString["Lang"]);
string _url = Server.UrlDecode(Request.QueryString["Url"]);
从查询字符串中正确解码_pid=5
_lang= en-US
_url = EmailToFriend.aspx?PID=5&Lang=en-US
值。