[C#]ASP.NET 中URL如何实现Winform中的Path.Combine的路径拼接方法

ASP.NET 2017-02-27 88阅读 0评论 0收藏 收藏本文

在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;

转载请注明:图享网 » [C#]ASP.NET 中URL如何实现Winform中的Path.Combine的路径拼接方法

文章评论

获取验证码