我正在写一个方法,比方说,1,你好,应该返回http://something.com/?something=1\u0026amp;hello=en.
我可以很容易地将它们组合在一起,但ASP.NET 3.5为构建URI提供了哪些抽象功能?我喜欢这样的东西:
URI uri = new URI("~/Hello.aspx"); // E.g. ResolveUrl is used here uri.QueryString.Set("something","1"); uri.QueryString.Set("hello","en"); return uri.ToString(); // /Hello.aspx?something=1&hello=en
我发现Uri类听起来非常相关,但我找不到任何真正完成上述操作的内容.有任何想法吗?
(对于它的价值,参数的顺序对我来说无关紧要.)
解决方法
编辑纠正大量错误的代码
基于this answer到类似的问题,您可以轻松地执行以下操作:
UriBuilder ub = new UriBuilder(); // You might want to take more care here,and set the host,scheme and port too ub.Path = ResolveUrl("~/hello.aspx"); // Assumes we're on a page or control. // Using var gets around internal nature of HttpValueCollection var coll = HttpUtility.ParseQueryString(string.Empty); coll["something"] = "1"; coll["hello"] = "en"; ub.Query = coll.ToString(); return ub.ToString(); // This returned the following on the VS development server: // http://localhost/Hello.aspx?something=1&hello=en
这也将对集合进行urlencode,因此:
coll["Something"] = "1"; coll["hello"] = "en&that";
将输出:
Something=1&hello=en%26that
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。