[asp.net] [general] comment écrire avec asp.net ?

Comment ecrire avec asp.net ?

Cette question à l'air toute simple, mais il existe beaucoup de méthodes pour écrire dans la page, et malheureusement les plus utilisées ne sont pas les meilleures.

Response.Write

Response.Write était la seule possibilité avec asp (3) d'écrire dans une page. Cette méthode existe toujours avec asp.net, mais elle est à éviter. En effet, avec asp le code vbscript était mélangé au code HTML ce qui faisait des codes pas très esthétiques du genre :

La Date : <% Response.Write(Date())%><br/>
L'heure : <%Response.Write(Time())%><br/>

On peut toujours mélanger le code vb.net ou C# avec du HTML mais ça ralentit l'exécution et asp.net n'a pas du tout été conçu dans cet optique la.

On peut cependant utiliser Response.Write dans la méthode Page_Load de la page :

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Response.Write("La date " & Now.ToShortDateString & "<br/>")
    Response.Write("L'heure " & Now.ToShortTimeString & "<br/>")
End Sub

Le problème de cette méthode écrira la date et l'heure en premier, avant la balise <html> :

La date 17/07/2004<br/>L'heure 17:10<br/>
<html>
<head>
....

Avec Response.Write dans le code, on ne peut écrire que dans le début du document, ce qui est, bien sur, une méthode qui ne nous convient pas.

Pour combler cela, le développeur utilise généralement des labels, comme c'est le cas pour les applications Winforms.

Label1.Text

Pour pouvoir écrire n'importe où dans la page, les développeurs font généralement appel aux labels. Ils l'incorporent comme ceci dans la page aspx :

 <asp:Label id="Label1" runat="server"></asp:Label>

Ils n'ont ensuite plus qu'a écrire dans le code :

Label1.Text = "La date " & Now.ToShortDateString & "<br/>"
Label1.Text &= "L'heure " & Now.ToShortTimeString & "<br/>"

Mais cette solution n'est encore pas la meilleure. Cette solution, est trop fortement inspirée des applications winforms. En effet, le code ci dessus est tout à fait correct pour une winform, mais asp.net gère des WebForm, et il faut clairement séparer les deux, même si certains points se ressemblent beaucoup.

Mais voyons pourquoi cette solution ne convient pas, pour cela analysons, le code HTML généré :

<span id="Label1">La date 17/07/2004<br/>L'heure 17:18<br/></span>

Le code HTML semble bon, mais est-il utile d'avoir les balises span ?
Imaginez une feuille possédant une vingtaine d'informations de quelques lettres, cela gênera un code HTML du style :

Code Client : <span id="Label1">108D</span>

alors que

Code Client : 108

aurait suffit. L'ajout des balises span autour du texte représente un poids non négligeable sur la page.
Il existe une dernière solution pour faire face à ce problème mais elle est malheureusement moins utilisée.

Literal1.Text

Il existe un contrôle asp.net qui fait exactement ce que nous voulons : écrire dans la page sans l'entourer des balises span : le contrôle Literal

On le place comme ceci dans la page aspx :

<asp:Literal id="Literal1" runat="server"></asp:Literal>

et dans le code on fait tout simplement :

Literal1.Text = "La date " & Now.ToShortDateString & "<br/>"
Literal1.Text &= "L'heure " & Now.ToShortTimeString & "<br/>"

Enfin le code HTML généré sera tout simplement :

La date 17/07/2004<br/>L'heure 17:18<br/>

il ne sera pas entouré des spans qui sont bien souvent inutiles.

Conclusion

Pour conclure, je vous conseille de complètement oublier le Response.Write. Il peut servir seulement pour debugger nos applications. Les labels, peuvent toutefois servir dans certains cas. En effet, ils ont des propriétés que le control literal ne possèdent pas comme : CssClass etc. ... mais dans la plupart des cas, il vaut mieux se servir du contrôle Literal qui fera du code plus propre.

Ce document intitulé « [asp.net] [general] comment écrire avec asp.net ? » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous