在Winform 应用程序中,我们可以使用Path.Combine()方法来将文件或者文件夹的多段连接起来。 比如:
Path.Combine(@"C:","System");
会输出如下结果:
C:\System
那么在ASP.NET的Web应用程序中,我们的URL地址也用同样的方法处理可以吗?
答案是否定的
在ASP.NET的Web 应用程序中则没有Path.Combine()这个关于路径的操作的方法的。
Url.Combine("http://MyUrl.com/", "/Images/Image.jpg")
接连后想得到:
"http://MyUrl.com/Images/Image.jpg"
在ASP.NET[C#]中,URL路径的链接方法,我们可以自己来扩展,以达到Path.Combine的效果。
方法一、直接使用Uri类来处理:
Uri baseUri = new Uri("http://www.contoso.com");
Uri myUri = new Uri(baseUri, "catalog/shownew.htm");
方法二、使用Uri.TryCreate
Uri result = null;
if (Uri.TryCreate(new Uri("http://msdn.microsoft.com/en-us/library/"), "/en-us/library/system.uri.trycreate.aspx", out result))
{
Console.WriteLine(result);
}
方法三、自己写静态方法来处理
public static string Combine(string uri1, string uri2)
{
uri1 = uri1.TrimEnd('/');
uri2 = uri2.TrimStart('/');
return string.Format("{0}/{1}", uri1, uri2);
}
或者
public static string CombineUri(params string[] uriParts)
{
string uri = string.Empty;
if (uriParts != null && uriParts.Count() > 0)
{
char[] trims = new char[] { '\\', '/' };
uri = (uriParts[0] ?? string.Empty).TrimEnd(trims);
for (int i = 1; i < uriParts.Count(); i++)
{
uri = string.Format("{0}/{1}", uri.TrimEnd(trims), (uriParts[i] ?? string.Empty).TrimStart(trims));
}
}
return uri;
}
方法四、写个静态扩展类
using System;
using System.Linq;
public static class UriExtensions
{
public static Uri Append(this Uri uri, params string[] paths)
{
return new Uri(paths.Aggregate(uri.AbsoluteUri, (current, path) => string.Format("{0}/{1}", current.TrimEnd('/'), path.TrimStart('/'))));
}
}
使用方式如下:
var url = new Uri("http://example.com/subpath/").Append("/part1/", "part2").AbsoluteUri;
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册