Répertoire et nom de fichier aspx

Le
Gloops
Bonjour tout le monde,

Voici quelques semaines (en fait, en commençant à partir d'il y a pil=
e
deux mois) j'ai trouvé (avec un soutien moral ici) comment établir la=

liste des cultures pour lesquelles une page est traduite, en parcourant
la liste des fichiers de ressources du répertoire consacré à cet ef=
fet.
Pour chacun il faut demander la traduction d'une ressource, il faudra
donc faire attention d'avoir un nom de ressource présent dans tous les =

fichiers de ressources.

Je suis en train de mettre ça en œuvre, pour cela il me faut le
répertoire et le nom de la page, et je me demande si pour ça je n'ai =
pas
loupé une syntaxe plus simple.

J'avais d'abord pensé à MapPath, mais ce n'était pas forcément pl=
us
simple, puisque je cherche à avoir une syntaxe qui fonctionne pour
toutes les pages, et que je pourrai inclure (après adaptation bien
entendu) dans le code d'une page maîtresse (aspect que je n'ai pas
encore abordé).

Voici donc comment j'ai procédé pour établir le chemin d'un fichier=
de
ressources :

TraitPage p = new TraitPage();
CultureInfo gci = new CultureInfo("fr"); // par exemple
Label1.Text = p.CheminCulture(this, gci); // pour voir


public class TraitPage
{
public TraitPage()
{
//
// TODO: Add constructor logic here
//
}

public String NomPage(Page p)
{
string str;
int L = p.Request.PhysicalPath.LastIndexOf("\") + 1;
str = p.Request.PhysicalPath
.Substring(L, p.Request.PhysicalPath.Length - L);
L = str.IndexOf(".");
return str.Substring(0, L);
}

public String RepPage(Page p)
{
string str;
int L = p.Request.PhysicalPath.LastIndexOf("\") + 1;
str = p.Request.PhysicalPath.Substring(0, L);
return str;
}

public String CheminCulture(Page p, CultureInfo ci)
{
string str;
str = RepPage(p) + "App_LocalResources\" + NomPage(p)
+ ".aspx." + ci.ToString() + ".resx";
return str;
}

}
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles Kohl [MVP]
Le #12140261
On Thu, 06 Mar 2008 20:28:21 +0100, Gloops wrote:

Bonjour tout le monde,

Voici quelques semaines (en fait, en commençant à partir d'il y a pile
deux mois) j'ai trouvé (avec un soutien moral ici) comment établir la
liste des cultures pour lesquelles une page est traduite, en parcourant
la liste des fichiers de ressources du répertoire consacré à cet effet.
Pour chacun il faut demander la traduction d'une ressource, il faudra
donc faire attention d'avoir un nom de ressource présent dans tous les
fichiers de ressources.

Je suis en train de mettre ça en œuvre, pour cela il me faut le
répertoire et le nom de la page, et je me demande si pour ça je n'ai pas
loupé une syntaxe plus simple.



Bonjour Gloops,

Je ne suis pas sûr de bien comprendre ce que tu essayes d'obtenir,
mais est-ce tu connais System.IO.Path et ses methodes statiques, comme
Path.Combine, Path.GetDirectoryName, Path.ChangeExtension,
Path.GetFileName, Path.GetFileNameWithoutExtension etc. ?

Petite collection très utile, la-dedans.

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Gloops
Le #12140251
Gilles Kohl [MVP] a écrit, le 06/03/2008 21:41 :
Bonjour Gloops,

Je ne suis pas sûr de bien comprendre ce que tu essayes d'obtenir,
mais est-ce tu connais System.IO.Path et ses methodes statiques, comme
Path.Combine, Path.GetDirectoryName, Path.ChangeExtension,
Path.GetFileName, Path.GetFileNameWithoutExtension etc. ?

Petite collection très utile, la-dedans.





Bonjour Gilles,

Effectivement, d'après les noms, ça a bien l'air d'être ça qu'il me faut.

Le fil d'il y a deux mois s'appelait "Liste des cultures du projet". Il
s'agira de remplir une liste déroulante avec les cultures disponibles
pour permettre à l'utilisateur de choisir dans quelle langue il veut
afficher la page, si le choix implicite ne lui convient pas pour une
raison ou pour une autre.

Je vais regarder ça de plus près demain, merci beaucoup.
Gloops
Le #12140231
Gilles Kohl [MVP] a écrit, le 06/03/2008 21:41 :
mais est-ce tu connais System.IO.Path et ses methodes statiques



Alors voilà ce que ça donne. Je n'ai pas changé l'appel, puisque la
structure en fonction me semble à maintenir, en revanche les fonctions
sont bien entendu plus lisibles, on s'épargne la gymnastique
intellectuelle à la lecture, qui faisait que mon code n'était lisible
que jusqu'à 23h ;)


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Globalization;

/// <summary>
/// Summary description for TraitPage
/// </summary>
public class TraitPage
{
public TraitPage()
{
//
// TODO: Add constructor logic here
//
// peut-être à redire sur le fait que je n'ai rien
// mis ici ...
}

public String NomPage(Page p)
{
return
System.IO.Path.GetFileNameWithoutExtension(p.Request.PhysicalPath);
}

public String RepPage(Page p)
{
return System.IO.Path.GetDirectoryName(p.Request.PhysicalPath)
+ @"";
}

public String CheminCulture(Page p, CultureInfo ci)
{
return RepPage(p) + "App_LocalResources\"
+ NomPage(p) + ".aspx." + ci.ToString() + ".resx";
}

}
Gilles Kohl [MVP]
Le #12140201
On Fri, 07 Mar 2008 23:08:27 +0100, Gloops wrote:

Gilles Kohl [MVP] a écrit, le 06/03/2008 21:41 :
mais est-ce tu connais System.IO.Path et ses methodes statiques



Alors voilà ce que ça donne. Je n'ai pas changé l'appel, puisque la
structure en fonction me semble à maintenir, en revanche les fonctions
sont bien entendu plus lisibles, on s'épargne la gymnastique
intellectuelle à la lecture, qui faisait que mon code n'était lisible
que jusqu'à 23h ;)




public String NomPage(Page p)
{
return
System.IO.Path.GetFileNameWithoutExtension(p.Request.PhysicalPath);
}

public String RepPage(Page p)
{
return System.IO.Path.GetDirectoryName(p.Request.PhysicalPath)
+ @"";
}

public String CheminCulture(Page p, CultureInfo ci)
{
return RepPage(p) + "App_LocalResources\"
+ NomPage(p) + ".aspx." + ci.ToString() + ".resx";
}

}



Bien plus lisible à mon avis. Un "using System.IO;" permettrait
d'économiser encore quelques charactères.

Si NomPage n'est pas utilisé ailleurs (et si la nomenclature est celle
que je pense), on pourrait le changer en

return Path.GetFileName(p.Request.PhysicalPath);

et économiser encore le

+ ".aspx."

dans CheminCulture?

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Gloops
Le #12140151
Gilles Kohl [MVP] a écrit, le 08/03/2008 08:46 :
Bien plus lisible à mon avis. Un "using System.IO;" permettrait
d'économiser encore quelques charactères.



c'est pourtant vrai ...


Si NomPage n'est pas utilisé ailleurs (et si la nomenclature est cell e
que je pense), on pourrait le changer en

return Path.GetFileName(p.Request.PhysicalPath);

et économiser encore le

+ ".aspx."

dans CheminCulture?




Ah oui, j'ai sûrement dû me faire un nœud dans la tête : j'ai pré vu
l'emplacement pour mettre le code de la culture, mais c'était après
aspx, donc effectivement on peut mettre le nom entier avec son extension.

Merci encore pour ces précieux conseils.
Publicité
Poster une réponse
Anonyme