[英]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.