2009-11-28 27 views
18

Tengo una página ASPX llamada Default.aspx. Desde su código subyacente en Page_Load(), me gustaría llegar "Default.aspx", solo, en una cadena:ASP.NET: Obtener el nombre de archivo de la página

protected void Page_Load(object sender, EventArgs e) 
{ 
    string aspxFileName = ?; 
} 

Qué debo reemplazar ? con — lo que me va a obtener el nombre del archivo ASPX?

Respuesta

6
protected void Page_Load(object sender, EventArgs e) 
{ 
    string cssFileName = Path.GetFileName(this.Request.PhysicalPath).Replace(".aspx", ".css"); 
} 
+4

¿Por qué reemplazar .aspx con .css? –

+1

@jdk: creo que JamesBrownIsDead copió y pegó uno de sus códigos existentes. Pero la idea general está ahí para que todos la vean. –

24

System.IO.Path.GetFileName (Request.PhysicalPath);

4

Ya se tomaron algunas respuestas cortas, por diversión, y porque probablemente quiera hacer esto desde otros formularios web, aquí hay una solución expandida que afectará uniformemente todos los formularios web en su proyecto (incluye código para obtener un nombre de archivo según lo solicitado).

Cree un método de extensión para la clase System.Web.UI.Page poniendo este código en un archivo. Necesita usar .NET 3.5.

namespace MyExtensions { 
    using System.Web.UI; 

    static public class Extensions { 

     /* You can stuff anybody else's logic into this 
     * method to get the page filename, whichever implementation you prefer. 
     */ 
     static public string GetFilename(this Page p) { 
      // Extract filename. 
      return p.AppRelativeVirtualPath.Substring(
       p.AppRelativeVirtualPath.IndexOf("/") + 1 
       ); 
     } 

    } 
} 

Para obtener el nombre del archivo desde cualquier formulario Web ASP.NET (por ejemplo, en el método de carga que ha especificado):

using MyExtensions; 

    protected void Page_Load(object sender, EventArgs e) { 
     string aspxFileName = this.GetFilename(); 
    } 

llama a este método en cualquier formulario web en su proyecto.

+2

No agregue código a los espacios de nombres del sistema. Es una idea completamente mala. –

+0

Sí, calculé que podrían aparecer algunos comentarios sobre el uso del espacio de nombres ya que hago referencia a esta publicación de mi nueva pregunta sobre el espacio de nombres aquí http://stackoverflow.com/questions/1813746/should-i-put-custom-code-inside- microsofts-bcl-fcl-namespaces - así que voy a editar este ejemplo de código para usar espacios de nombres personalizados. –

+0

De acuerdo, terminó de modificar el uso del espacio de nombres de esta muestra para ajustarse a la práctica popular, y desvinculado este ejemplo de código del enlace mencionado anteriormente. –

Cuestiones relacionadas