Asp.Net System.Web.Routing Find actual .aspx Page

半腔热情 提交于 2019-12-04 10:12:06

There is actually another simple way to get the actual page:

String vPath = ((System.Web.Routing.PageRouteHandler)Page.RouteData.RouteHandler).VirtualPath
Do not forget to check Page.RouteData.RouteHandler is not null - while you are getting the page w/o ASP.Net routing but directly.

Can you not retrieve this from the current HttpContext object?

Perhaps something like this:

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; 
} 

UPDATE:
Have you tried this article?

How to: Construct a URL from a Route

You should be able to retrieve it back from the Routing table you have constructed.

vhinn terrible's answer worked...

Page.AppRelativeVirtualPath

You just have to remove the initial tilde ("~"), and you're ready to go.

var path = Page.AppRelativeVirtualPath.Replace("~", String.Empty);

I don't know why it was downvoted. Worked for me like a charm.

Try using this code:

Page.AppRelativeVirtualPath

I was able to use Context.CurrentHandler which give me "ASP.management_default_aspx", not exactly the page but enough to get the page name.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!