ASP.NET MVC中具有查询字符串的Server.MapPath



经过大约15分钟的谷歌搜索,我找不到这个简单问题的解决方案。那么一些小帮助?

该应用程序托管在网站的web子文件夹中,我需要映射一个相对Uri(这是RouteController中的Hello操作,以int和字符串作为参数(:

"~/Route/Hello/129?name=kennyzx"

http://myserver/web/myapplication/Route/Hello/129?name=kennyzx

如果我使用

HttpContext.Current.Server.MapPath("~/Route/Hello/129?name=kennyzx");

它抛出一个异常,因为问号?是一个非法字符。

因此,我需要首先将Uri分为两部分~/Route/Hello/129?name=kennyzx,然后MapPath取第一部分,Path.CombineMapPath的结果和查询字符串连接起来。

有更简单的方法吗?

我意识到我使用了错误的API,它实际上扩展到了我的服务器上的真实文件路径

这就是我要做的:

我有一堆相对uri,我想写一个函数,在Razor页面中将它们扩展为绝对uri。

@{
ViewBag.Title = "Route Testing";
var link1 = "/Route/Hello/129?name=kennyzx";
var link2 = "~/Route/Hello/129?name=kennyzx";
}
@functions{
private static string GetAbsoluteUri(string link)
{ 
string absoluteUri = HttpContext.Current.Server.MapPath(link);
return absoluteUri;
}
}
<h2>Route Testing</h2>
<a href="@link1">@link1</a><br />
<a href="@link2">@link2</a><br />
<a href="@GetAbsoluteUri(@link2)">@link2</a><br />

但以上都没有得到正确的绝对路径。

第一个扩展到http://myserver/Route/Hello/129?name=kennyzx,

第二个扩展到http://myserver/web/myapplication/~/路线/你好/129?name=kennyzx

第三个例外,这就是为什么我要问这个问题。

Server.MapPath返回服务器上的实际路径,如file:///C:/somefolder/somefile。它不用于解析相对URL。

原来我要找的是@Url.Content来解析Razor页面中的相对Url。

@{
ViewBag.Title = "Route Testing";
var link1 = "~/Route/Hello/129?name=kennyzx";
}
<h2>Route Testing</h2>
<a href="@Url.Content(@link1)">@link1</a><br />

相关内容

  • 没有找到相关文章

最新更新