2010-06-09 8 views
4

Existe-t-il une méthode pour récupérer le nom de fichier d'une classe?Existe-t-il une méthode pour récupérer le nom de fichier d'une classe?

Spécifiquement je voudrais créer une méthode statique (CreateLink) dans une classe de base (BasePage) pour renvoyer automatiquement le chemin et le nom de fichier de la page appelée.

code I dans .C# ASP.NET

private const string TEMPLATE = 
    "~/One.aspx"; 

public static HyperLink CreateLink() 
{ 
    HyperLink link = new HyperLink(); 
    link.Text = "Click here"; 
    link.NavigateUrl = String.Format(TEMPLATE); 
    return link; 
} 

Est-il possible d'éviter l'utilisation de variables TEMPLATE hardcoded? Est-il possible de récupérer le chemin One.aspx à partir du nom et de l'emplacement du fichier?

+0

À quelle page voulez-vous que le chemin? – SLaks

+0

votre question n'est pas claire, vous voulez accéder au nom de fichier pour un chemin donné ou vous voulez extraire le nom de fichier d'une variable de requête? –

Répondre

6

Vous pouvez obtenir le chemin de la page en cours de demande en vérifiant HttpContext.Current.Request.Path.

+0

HttpContext.Current.Request.Path obtient le chemin de la requête en cours. J'aimerais pouvoir récupérer le chemin de la prochaine requête. :-) –

+0

Quelle est la prochaine requête? – SLaks

1

Pour obtenir le code-behind nom de fichier en utilisant la réflexion réelle, vous pouvez utiliser les éléments suivants:

using System.Diagnostics; 

StackTrace stackTrace = new StackTrace(true); 
StackFrame frame = stackTrace.GetFrame(0); 
string s = frame.GetFileName(); 
+0

Ceci est faux sur _many_ niveaux, et ne peut pas fonctionner. – SLaks

+0

Point pris, mais il répond à la "Existe-t-il une méthode pour récupérer le nom de fichier d'une classe?" une partie de la question, même si j'aurais dû lire toute la question plus attentivement ... –

2

ce que vous entendez par nom de fichier d'une classe? Vous devez obtenir le nom de fichier d'un chemin donné? Essayez ceci

Path.GetFileName(HttpContext.Current.Request.Path)