首页 / ASP.NET / 正文

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

14715 发布于: 2017-02-27 读完约需6分钟

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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: ASP.NET Web Api 2 控制器中获取客户端IP地址的静态扩展类

下一篇: [C#]ASP.NET MVC应用程序中如何使用枚举创建一个下拉列表框

本文永久链接码友网 » [C#]ASP.NET 中URL如何实现Winform中的Path.Combine的路径拼接方法

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册