[英]Asp.Net System.Web.Routing won't route URL unless .aspx in on the end
[英]Asp.Net System.Web.Routing Find actual .aspx Page
我正在使用System.Web.Routing來獲得更好的URL,並遇到了一個問題。 我需要知道處理請求的實際頁面。
例如,請求來自:
/basketball/home
我需要找到處理該請求的頁面,例如:
/management/default.aspx
我只使用System.Web.Routing而不是MVC。 我有一個RequestContext的句柄,它包含一些路由信息,但我看不到我需要的東西。
提前致謝。
*******更新*******
我能夠使用Context.CurrentHandler ,它給我“ASP.management_default_aspx” ,不完全是頁面,但足以獲取頁面名稱。
實際上還有另一種獲取實際頁面的簡單方法:
String vPath = ((System.Web.Routing.PageRouteHandler)Page.RouteData.RouteHandler).VirtualPath
不要忘記檢查Page.RouteData.RouteHandler不是null - 當你獲得沒有ASP.Net路由的頁面但直接。
你能不能從當前的HttpContext對象中檢索它?
也許是這樣的:
public string GetCurrentPageName()
{
string sPath = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
System.IO.FileInfo oInfo = new System.IO.FileInfo(sPath);
string sRet = oInfo.Name;
return sRet;
}
更新:
你試過這篇文章嗎?
您應該能夠從您構建的路由表中檢索它。
vhinn可怕的答案有效......
Page.AppRelativeVirtualPath
你只需要刪除初始波形符(“〜”),然后就可以了。
var path = Page.AppRelativeVirtualPath.Replace("~", String.Empty);
我不知道為什么它被downvoted。 為我工作就像一個魅力。
嘗試使用此代碼:
Page.AppRelativeVirtualPath
我能夠使用Context.CurrentHandler,它給我“ASP.management_default_aspx”,不完全是頁面,但足以獲取頁面名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.