En travaillant sur une Webpart Sharepoint j'ai eu à utiliser une énième fois la classe Literal. Pour ceux qui ne connecterait pas, il s'agit d'un contrôle très utiles pour insérer du HTML dans une collection des contrôles (très pratique pour faire la mise en forme dans une Webpart).
En vouant utiliser mon Literal je suis tombé sur LiteralControl (merci IntelliSense pour cette découverte)... on se doute bien que Microsoft n'a pas créer ces deux classes pour le plaisir, donc quelles sont les différences?
- Literal : est un contrôle serveur proche du Label, on peut donc l'utiliser de la même manière que le Label et changer sa propriété Text à tout moment. A la différence du Label, Literal n'a pas de propriété css.
- LiteralControl : est un contrôle qui n'a pas d' interaction avec le serveur, donc pas de ViewState. Il permet donc une insertion de texte statique (HTML ou autre) et de ne plsu y revenir par la suite.
Donc en y regardant d'un peu plus près ces deux contrôles ne sont pas du tout prévus pour les même usages, et dans mon cas le LiteralControl l' emporte haut la main en terme de contrôle destiné à la création de HTML dans les Webpart Sharepoint, que ce soit pour le poids des pages ou pour la syntaxe.
Sachant qu'en plus le LiteralControl bénéficie d'un constructeur permettant de passer directement le texte à utiliser.
Par exemple, un code très souvent utiliser pour battire des tables HTML :
// Avec un Literal Literal literalNextLine = new Literal() { Text = @"</td><td>" }; // La même chose avec notre LiteralControl LiteralControl literalNextLine = new LiteralControl(@"</td><td>");
La syntaxe est surtout allégées quand il faut ajouter le HTML à la collection de contrôles :
// Avec un Literal this.Controls.Add(new Literal() { Text = @"</td><td>" }); // La même chose avec notre LiteralControl this.Controls.Add(new LiteralControl(@"</td><td>"));
Enfin, ce n'est que mon avis.