asp.net routing system.web.routing

Asp.Net System.Web.Routing Encuentra la página real de.aspx



(5)

Pude usar Context.CurrentHandler que me dio "ASP.management_default_aspx", no exactamente la página pero lo suficiente para obtener el nombre de la página.

Estoy usando System.Web.Routing para tener algunas URL mejores y he encontrado un problema. Necesito saber la página real que está manejando la solicitud.

por ejemplo, una solicitud entra como:

/basketball/home

Necesito encontrar la página que maneja esa solicitud, como:

/management/default.aspx

Solo estoy usando System.Web.Routing y no MVC. Tengo un control para RequestContext que contiene parte de la información de la ruta, pero no veo lo que necesito.

Gracias por adelantado.

******* ACTUALIZACIÓN *******

Pude usar Context.CurrentHandler que me dio "ASP.management_default_aspx" , no exactamente la página pero lo suficiente para obtener el nombre de la página.


En realidad, hay otra manera simple de obtener la página real:

String vPath = ((System.Web.Routing.PageRouteHandler)Page.RouteData.RouteHandler).VirtualPath
No olvide comprobar Page.RouteData.RouteHandler no es nulo, mientras obtiene la página sin enrutamiento ASP.Net pero directamente.


Intenta usar este código:

Page.AppRelativeVirtualPath


¿No puedes recuperar esto del objeto HttpContext actual?

Quizás algo como esto:

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

ACTUALIZAR:
¿Has probado este artículo?

Cómo: construir una URL a partir de una ruta

Debería poder recuperarlo desde la tabla de Enrutamiento que ha construido.


La respuesta de vhinn terrible funcionó ...

Page.AppRelativeVirtualPath

Solo tienes que eliminar la tilde inicial ("~"), y estás listo para continuar.

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

No sé por qué fue downvoted. Funcionó para mí como un encanto.