簡體   English   中英

ASP.NET MVC中帶有查詢字符串的Server.MapPath

[英]Server.MapPath with query string in ASP.NET MVC

經過15分鍾的Goooooogling,我找不到解決此簡單問題的方法。 有什么幫助嗎?

該應用程序托管在web子文件夾中,我需要映射一個相對的Uri(這是RouteControllerHello操作,它以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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM