Asp.Net System.Web.Routing查找实际的.aspx页面

时间:2009-04-06 13:19:45

标签: asp.net routing system.web.routing

我正在使用System.Web.Routing来获得更好的URL并遇到了问题。我需要知道正在处理请求的实际页面。

例如,请求来自:

/basketball/home

我需要找到处理该请求的页面,例如:

/management/default.aspx

我只使用System.Web.Routing而不是MVC。我有一个RequestContext的句柄,它包含一些路由信息,但我看不到我需要的东西。

提前致谢。

*******更新*******

我能够使用 Context.CurrentHandler ,它给我“ASP.management_default_aspx”,不完全是页面,但足以获取页面名称。

5 个答案:

答案 0 :(得分:3)

实际上还有另一种获取实际页面的简单方法:

String vPath = ((System.Web.Routing.PageRouteHandler)Page.RouteData.RouteHandler).VirtualPath
不要忘记检查Page.RouteData.RouteHandler不为null - 当您获得没有ASP.Net路由但没有直接的页面时。

答案 1 :(得分:2)

你能不能从当前的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; 
} 

更新:
你试过这篇文章吗?

How to: Construct a URL from a Route

您应该能够从您构建的路由表中检索它。

答案 2 :(得分:1)

vhinn可怕的答案有效......

Page.AppRelativeVirtualPath

你只需删除初始代字号(“〜”),就可以了。

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

我不知道为什么会被投票。为我工作就像一个魅力。

答案 3 :(得分:0)

尝试使用此代码:

Page.AppRelativeVirtualPath

答案 4 :(得分:-1)

我能够使用Context.CurrentHandler,它给我“ASP.management_default_aspx”,不完全是页面,但足以获取页面名称。