我知道我能做到
var nv = HttpUtility.ParseQueryString(req.RawUrl);
但是有没有办法将其转换回 url 呢?
var newUrl = HttpUtility.Something("/page", nv);
只需致电ToString()
on the NameValueCollection
将返回名称值对name1=value1&name2=value2
查询字符串就绪格式。注意NameValueCollection
类型实际上并不支持这一点,并且建议这样做会产生误导,但由于实际返回的内部类型,该行为在这里起作用,如下所述。
感谢 @mjwills 指出HttpUtility.ParseQueryString
方法实际上返回一个内部HttpValueCollection
对象而不是常规对象NameValueCollection
(尽管文档指定NameValueCollection http://msdn.microsoft.com/en-us/library/ms150046(v=vs.110).aspx). The HttpValueCollection
使用时自动编码查询字符串ToString()
,因此无需编写循环遍历集合并使用UrlEncode
方法。期望的结果已经返回。
有了结果,您就可以将其附加到 URL 并重定向:
var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
string url = Request.Url.AbsolutePath + "?" + nameValues.ToString();
Response.Redirect(url);
目前唯一的方法是使用HttpValueCollection
是通过使用ParseQueryString
上面显示的方法(当然除了反射之外)。看来自那以后这不会改变连接问题请求公开此类 https://connect.microsoft.com/VisualStudio/feedback/details/356144/make-the-httpvaluecollection-class-public-and-move-it-to-system-dll已关闭,状态为“无法修复”。
顺便说一句,您可以致电Add
, Set
, and Remove
上的方法nameValues
在附加任何查询字符串项之前对其进行修改。如果你对此感兴趣看我对另一个问题的回答 https://stackoverflow.com/questions/3813934/change-single-url-query-string-value/3814281#3814281.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)