2011-01-28 59 views
33

Quiero escribir un método C# para recuperar la página actual. por ejemplo Default6.aspx sé que puedo hacer lo siguiente:obtener la página actual de la url

string url = HttpContext.Current.Request.Url.AbsoluteUri; 
// http://localhost:1302/TESTERS/Default6.aspx 

string path = HttpContext.Current.Request.Url.AbsolutePath; 
// /TESTERS/Default6.aspx 

string host = HttpContext.Current.Request.Url.Host; 
// localhost 

pero ¿cómo puedo obtener Default6.aspx? Y si la url es http://localhost:1302/TESTERS/, mi método debería devolver default.aspx

Respuesta

40
Path.GetFileName(Request.Url.AbsolutePath) 
+6

Creo que debería ser 'Path.GetFileName (Request.Url.AbsolutePath)' – user489998

+0

¿Qué pasa si tengo '#' en URL ..... es decir: http: test.abc.com /sitesposure.aspx#commentfocus ......... ¿funcionará? –

5

una función simple, como a continuación le ayudará a:

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

Prueba esto:

path.Substring(path.LastIndexOf("/"); 
+0

Por cierto, esto devolverá "/MyPage.aspx". Además, para los usuarios de VB.Net puede intentar 'Request.Path.Substring (Request.Path.LastIndexOf ("/"))' – cjbarth

+0

no es una buena manera. Obtendrá lo mismo que @ cl0rkster – Mike

12

La clase que se necesita es System.Uri

Dim url As System.Uri = Request.UrlReferrer 
Debug.WriteLine(url.AbsoluteUri) ' => http://www.mysite.com/default.aspx 
Debug.WriteLine(url.AbsolutePath) ' => /default.aspx 
Debug.WriteLine(url.Host)   ' => http:/www.mysite.com 
Debug.WriteLine(url.Port)   ' => 80 
Debug.WriteLine(url.IsLoopback) ' => False 

http://www.devx.com/vb2themax/Tip/18709

1

Puede intentar esto a continuación.

string url = "http://localhost:1302/TESTERS/Default6.aspx"; 

string fileName = System.IO.Path.GetFileName(url); 

Espero que esto ayude.

1
Request.Url.Segments.Last() 

Otra opción.

+0

esta no es una buena manera. ejemplo: www.mysite.com/Product/3. El nombre de la página puede ser Product o incluso Details o Index. Su declaración devolvería 3. No es el nombre de la página o incluso cuál es el argumento correcto de la url. – Mike

+0

Si está utilizando cualquier reescritura de URL, definitivamente estoy de acuerdo en que no es útil. Sin embargo, si usa la reescritura de URL como su ejemplo, ¿cuál sería el equivalente al Default6.aspx en la pregunta? – cl0rkster

Cuestiones relacionadas