[英]Server.MapPath with query string in ASP.NET MVC
经过15分钟的Goooooogling,我找不到解决此简单问题的方法。 有什么帮助吗?
该应用程序托管在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");
因为问号会引发异常?
是非法字符。
所以,我需要先开放的我们分成两个部分~/Route/Hello/129
和?name=kennyzx
,然后MapPath
需要的第一部分,和Path.Combine
连击的结果MapPath
查询字符串。
有没有更简单的方法可以做到这一点?
我意识到我使用了错误的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 /〜/ Route / Hello / 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 />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.