2014-10-20 62 views
0

我有一个“基本URL”(它本身是相对的)和一个“子URL”,它也是相对于“基本URL”的。我想正确地结合这些。例如:如何计算在.NET中的相对URL的相对URL?

"some/path/here" + "../other/path" => "some/other/path" 

如何在.NET中执行此操作? Uri职业要求第一个Uri是绝对的。

加:更多的例子,澄清。

"contents/styles/style.css" + "image.jpg" => "contents/styles/image.jpg" 
"contents/folder/style.css" + "../image.jpg" => "contents/image.jpg" 
"contents/folder/style.css" + "../images/image.jpg" => "contents/images/image.jpg" 

换句话说,在最初的例子,因为here没有一个斜线,它应该作为一个文件来处理。因此,..将移至文件夹some

+1

你的意思' “一些/路径/这里” + “../../other/path”=>“有些/其它/路径“'? – artm 2014-10-20 11:34:56

+0

@artm - 不,我会举更多的例子。 – 2014-10-20 11:37:45

+1

请更好地解释你的例子。它不是很清楚,我也想到其他人。谢谢。 – MSX 2014-10-20 11:40:34

回答

3

尝试:

UriBuilder builder = new UriBuilder(); 
Uri baseuri = builder.Uri; 
builder.Path = "some/path/here"; 
Uri finalUri = baseuri.MakeRelativeUri(new Uri(builder.Uri, "..\\other\\path")); 

Uri finalUri = baseuri.MakeRelativeUri(new Uri(builder.Uri, "file")); 
+0

哇,这实际上起作用了!偷偷摸摸,但工作! :) – 2014-10-20 11:59:20