我总是试图找出一些用asp.net来操纵uri/url的url/uri方法.
有这样的感觉很高兴:
UriAgilityPack uri = new UriAgilityPack("http://some.com/path?query1=value1");
Run Code Online (Sandbox Code Playgroud)
要么
UriAgilityPack uri = new UriAgilityPack().LoadSiteRelative("~/path?query1=value1");
Run Code Online (Sandbox Code Playgroud)
然后用
enum Schemes {
Http,
Https
}
uri.Scheme = Schemes.Https;
Run Code Online (Sandbox Code Playgroud)
和/或
foreach(QueryItem item in uri.Query)
// do something with item
Run Code Online (Sandbox Code Playgroud)
和/或
uri.Query.Add("AddToCart", 5)
Run Code Online (Sandbox Code Playgroud)
string s = uri.ToString() // https://some.com/path?query1=value1&AddToCart=5
要么
string root = uri.RootPath // /path?query1=value1&AddToCart=5
string relative = uri.RootRelativePath; // ~/path?query1=value1&AddToCart=5
Run Code Online (Sandbox Code Playgroud)
对于已经内置到框架中的东西,不需要敏捷包.所以从Uri开始:
var uri = new Uri("http://some.com/path?query1=value1");
Run Code Online (Sandbox Code Playgroud)
然后:
Console.WriteLine(uri.Scheme);
Run Code Online (Sandbox Code Playgroud)
然后:
var nvc = HttpUtility.ParseQueryString(uri.Query);
foreach (string key in nvc)
{
Console.WriteLine("key: {0}, value: {1}", key, nvc[key]);
}
Run Code Online (Sandbox Code Playgroud)
然后:
var builder = new UriBuilder(uri);
var nvc = HttpUtility.ParseQueryString(uri.Query);
nvc.Add("AddToCart", "5");
builder.Query = nvc.ToString();
Console.WriteLine(builder.ToString());
Run Code Online (Sandbox Code Playgroud)
最后:
Console.WriteLine(builder.Uri.PathAndQuery);
Run Code Online (Sandbox Code Playgroud)
看它有多容易?甚至更酷的是你可以在桌面应用程序中执行此操作,根本不需要ASP.NET.
如果我在.NET中处理url时有一个建议给你,那就永远不要使用字符串连接.始终使用API,因为它将保证您正确编码和尊重Web标准.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |