我正在使用System.Web.Routing来获得更好的URL并遇到了问题。我需要知道正在处理请求的实际页面。
例如,请求来自:/basketball/home
我需要找到处理该请求的页面,例如:
/management/default.aspx
我只使用System.Web.Routing而不是MVC。我有一个RequestContext的句柄,它包含一些路由信息,但我看不到我需要的东西。
提前致谢。
*******更新*******
我能够使用 Context.CurrentHandler ,它给我“ASP.management_default_aspx”,不完全是页面,但足以获取页面名称。
答案 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”,不完全是页面,但足以获取页面名称。