OVH Cloud OVH Cloud

[Deb] Ecrire une expression sur une page...

3 réponses
Avatar
Jérôme Quintard
Salut à tous,

Une question qui va probablement vous paraitre familière... car elle a du
être pas mal posée...

Imaginons que je veuille créer un objet nommé link qui possèderait deux
propriétés (Href, Label) et une méthode (Render) pour l'afficher sur la
page. En ASP il y aurrait deux façons de écrire le contenu de la méthode
Render :

1. response.write "<a href=" & chr(34) & m_Href & chr(34) & ">" & m_Label &
"</a>
2. <a href="<% =m_Href %>"><% =m_Label %></a>

Le résultat est le même dans un cas comme dans l'autre. La méthode 1 est
plus logique au niveau développement mais la méthode 2 rend le code plus
lisible et dans le cas ou l'on a besoin d'avantages de propriétés, elle
permet d'écrire facilement le code sur plusieurs lignes (pour la méthode 1
il vaut mieux écrire plusieurs lignes de response.write ce qui rend le code
imbuvable au bout d'un moment !)

Existe t'il en ASP.NET une façon qui permettrait de rendre le code plus
lisible que la méthode 1 et plus rigoureuse que la méthode 2. Du genre :

output.write "<a href=\"%1\">%2</a>", m_Href, m_Label

Bon le \" n'existe probablement pas et référence au \' bien connu d'autres
langages (il évite de mettre le chr(34)). Idem pour %1, %2 bien connu en C,
entre autres et qui permet d'insérer des paramètres indiqué en fin de
fonction.
Donc ma question est simple est t'il possible d'ajouter des paramètres de
façons très simple dans une expression (qui peut être très longue) à écrire,
à afficher dans un msgbox, etc.

Merci pour vos réponses !

Jérôme

3 réponses

Avatar
Zazar
Bonjour,


Imaginons que je veuille créer un objet nommé link qui possèderait deux
propriétés (Href, Label) et une méthode (Render) pour l'afficher sur la
page.



En ASP il y aurrait deux façons de écrire le contenu de la méthode
Render :

1. response.write "<a href=" & chr(34) & m_Href & chr(34) & ">" & m_Label
&
"</a>
2. <a href="<% =m_Href %>"><% =m_Label %></a>

Le résultat est le même dans un cas comme dans l'autre. La méthode 1 est
plus logique au niveau développement mais la méthode 2 rend le code plus
lisible et dans le cas ou l'on a besoin d'avantages de propriétés, elle
permet d'écrire facilement le code sur plusieurs lignes (pour la méthode 1
il vaut mieux écrire plusieurs lignes de response.write ce qui rend le
code
imbuvable au bout d'un moment !)

Existe t'il en ASP.NET une façon qui permettrait de rendre le code plus
lisible que la méthode 1 et plus rigoureuse que la méthode 2. Du genre :

output.write "<a href="%1">%2</a>", m_Href, m_Label

Bon le " n'existe probablement pas et référence au ' bien connu d'autres
langages (il évite de mettre le chr(34)). Idem pour %1, %2 bien connu en
C,
entre autres et qui permet d'insérer des paramètres indiqué en fin de
fonction.
Donc ma question est simple est t'il possible d'ajouter des paramètres de
façons très simple dans une expression (qui peut être très longue) à
écrire,
à afficher dans un msgbox, etc.




Je suppose que vous cherchez la fonction String.Format():

String.Format("Param1= {0}; Param2={1};", "foo", "bar") renvoie "Param1 =
foo; Param2ºr".

Mais sinon je n'ai rien compris à votre histoire de création d'objet et de
méthode Render. :)

Est-ce que vous parliez de

1) Créer un contrôle web ?

2) Créer un objet sur une webform ?

Dans le premier cas, dans votre méthode Render, vous appelez les méthodes
WriteAttributes, StartElement & co, vous n'écrivez pas de html ou d'asp ou
autre truc y ressemblant.

Dans le second cas, vous n'avez pas besoin d'écrire de méthode Render().
Vous placez un objet de type HyperLink sur la feuille et vous définissez ses
propriétés dans le code behind : on n'est pas obligé de mélanger le code
source et la présentation html, alors on ne le fait pas.

Bon courage,

--

Zazar
Avatar
Jérôme Quintard
Oui mais je voulais savoir
Je suppose que vous cherchez la fonction String.Format():



Je connais string format mais je cherchais un moyen encore plus pratique...
histoire d'éviter de couper le code en plusieurs lignes lorsqu'il est très
long !

Mais sinon je n'ai rien compris à votre histoire de création d'objet et de
méthode Render. :)

Est-ce que vous parliez de

1) Créer un contrôle web ?



Oui ! En fait le but c'est de pouvoir faire des contrôles web plus compliqué
que les objets de base webform.

Jérôme
Avatar
Zazar
Bonsoir,

> Je suppose que vous cherchez la fonction String.Format():

Je connais string format mais je cherchais un moyen encore plus


pratique...

Aprés vous pouvez écrire votre fonction qui prend un nombre variable de
paramètre et qui appelle un String.Format si vous voulez éviter que le
String.Format apparaisse à chaque appel de la fonction write.

histoire d'éviter de couper le code en plusieurs lignes lorsqu'il est très
long !


Est-ce vraiment une contrainte génante ?

> Mais sinon je n'ai rien compris à votre histoire de création d'objet et


de
> méthode Render. :)
>
> Est-ce que vous parliez de
>
> 1) Créer un contrôle web ?

Oui ! En fait le but c'est de pouvoir faire des contrôles web plus


compliqué
que les objets de base webform.



Je ne sais pas si les exemples que vous donniez correspondent réellement à
votre code, mais dans le mesure du possible, évitez le plus possible
d'écrire directement du html, privilégiez plutôt l'encapsulation des
contrôles déjà existant.

--
Zazar