5

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

例如一个请求进来:

/basketball/home

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

/management/default.aspx

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

提前致谢。

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

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

4

5 回答 5

3

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

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

于 2012-07-18T08:04:12.717 回答
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; 
} 

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

如何:从路由构造 URL

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

于 2009-04-06T13:28:02.200 回答
1

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

Page.AppRelativeVirtualPath

您只需删除初始波浪号(“~”),就可以开始了。

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

我不知道为什么它被否决了。像魅力一样为我工作。

于 2015-01-09T02:44:09.670 回答
0

尝试使用此代码:

Page.AppRelativeVirtualPath
于 2013-03-14T03:30:36.040 回答
-1

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

于 2009-12-09T04:06:26.000 回答