如何操作URL来访问父目录

时间:2018-12-11 15:54:38

标签: c# asp.net .net

我有一个内部网络上托管的asp.net Web应用程序。在我的测试环境中,它当然托管在localhost:01010 / Views / page.aspx上。现在,每当我直播时,Url就会更改为server_name / folder 1 / folder 2 / views / page.aspx。我想做的是获取一个新页面,以server_name / folder 1 / folder 2 / Uploaded_Images / randomimage.png打开。现在,我可以获取该URL,但是只要执行一个“ .Remove(url.lastindexof(“ /”)+ 1)”,它就会返回“ server_name / folder 1 / folder 2 / Views”。我执行第二个“ .Remove(url.lastindexof(“ /”)+ 1)“ 并且它仅返回“ server_name /”。我正在为此努力,希望在世界某个地方已经有一个.net开发人员内置了它。感谢所有帮助。

也只是指定这是Webforms而不是mvc。除了response.write以外,没有其他操作可以进行ajax或页面操作。

2 个答案:

答案 0 :(得分:0)

您不需要+1,可以使用:

var url = "server_name/folder 1/folder 2/views/page.aspx";
url = url.Remove(url.LastIndexOf("/"));
url = url.Remove(url.LastIndexOf("/"));

或者您可以这样做:

var parts = url.Split('/');
var newPath = string.Join("/", parts.Take(3));

答案 1 :(得分:0)

我假设您是在谈论URL用作指向您网站的一部分的链接,而不是文件系统上的物理路径。

在大多数情况下,您应该能够使用动态构造路径的方法。例如,在您的任何.aspx文件(或.aspx.cs文件)中,都可以使用ResolveUrl方法,如下所示:

<a href="<%=ResolveUrl("~/Views/page.aspx")%>">Some link</a>

如果在任何地方都需要完整的URL,包括域(例如电子邮件通知之类的东西),那么我要做的就是让静态变量可供整个应用程序访问,该变量是首次设置{ 1}}运行:

Application_BeginRequest

这将从void Application_BeginRequest(object sender, EventArgs e) { if (SiteRoot == null) { SiteRoot = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + (VirtualPathUtility.ToAbsolute("~") == "/" ? "" : VirtualPathUtility.ToAbsolute("~")); } } 详细信息(用户用来访问您的网站的URL)中提取完整URL,而不会出现任何斜杠。