微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET:URI处理

我正在写一个方法,比方说,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 举报,一经查实,本站将立刻删除。

相关推荐