L’utilisation de HtmlTextWriter présente-t-elle des avantages si vous n’allez pas bénéficier du rendu adaptatif?

En dehors des avantages offerts par le rendu adaptatif pour les autres périphériques, est-il judicieux d’écrire tout ce code

writer.WriteBeginTag("table"); writer.WriteBeginTag("tr"); writer.WriteBeginTag("td"); writer.Write(HtmlTextWriter.TagRightChar); writer.WriteEncodedText(someTextVariable); writer.WriteEndTag("td"); writer.WriteEndTag("tr"); writer.WriteEndTag("table"); 

Quand SsortingngBuilder pourrait construire la même chose avec simplement ceci:

 sb.Append("
"); sb.Append(someTextVariable); sb.Append("
");

Je peux penser à deux raisons d’utiliser HtmlTextWriter:

  1. Vous pouvez utiliser writer pour garder trace de vos retraits, de sorte que le code HTML généré soit correctement mis en forme, plutôt que sur une seule ligne.

  2. HtmlTextWriter est généralement associé à un stream de sortie. Il devrait donc être plus efficace que de créer une longue chaîne en mémoire (en fonction de la quantité de HTML générée).

Aucune de ces raisons ne sont extraordinaires, mais elles me suffisent pour me convaincre d’utiliser l’écrivain lorsque l’efficacité est requirejse ou si j’écris un contrôle de base qui sera réutilisé et devra être aussi professionnel que possible. Votre kilométrage peut varier :-).

Un autre avantage pourrait être que l’utilisation de HtmlTextWriter permet de formater le code de manière plus propre (plus facile à gérer), et que HtmlTextWriter prend en charge le codage HTML automatiquement. Comparer:

 writer.AddAtsortingbute(HtmlTextWriterAtsortingbute.Id, "someId"); if (!ssortingng.IsNullOrEmpty(cssClass)) writer.AddAtsortingbute(HtmlTextWriterAtsortingbute.Class, cssClass); writer.AddStyleAtsortingbute(HtmlTextWriterStyle.Color, "Red"); writer.RenderBeginTag(HtmlTextWriterTag.Span); writer.WriteEncodedText(text); writer.RenderEndTag(); 

contre:

 SsortingngBuilder html = new SsortingngBuilder(); html.Append(""); html.Append(HttpUtility.HtmlEncode(text)); html.Append(""); 

On peut soutenir que le code du deuxième exemple peut être écrit de manière différente, voire plus propre, mais cela pourrait être perçu comme un avantage de HtmlTextWriter, car il applique fondamentalement une manière canonique de formater (ce qui améliore encore la maintenance).

Edit: En fait, j’ai en fait commis une erreur dans le deuxième extrait de code et j’avais besoin de revenir en arrière et de corriger la réponse. Cela confirme ce que je voulais dire.

HtmlTextWriter est bénéfique parce que:

HtmlTextWriter est le plus propre et le balisage est bien mis en retrait lorsqu’il est rendu.

Il y a un impact sur les performances car HtmlTextWriter écrit directement dans le stream de sortie. Ssortingngbuilder n’écrit pas dans le stream de sortie tant que ToSsortingng n’est pas appelé.

Vous trouverez également un exemple d’utilisation de HtmlTextWriter pour l’ enregistrement et la réutilisation de la sortie HTML .

À un moment donné, vous devez toujours passer cela à un HtmlTextWriter afin de le rendre au client. Je suppose que vous auriez un rédacteur final.Write (sb.ToSsortingng ()); dans le deuxième exemple. Ce que vous pouvez faire pour réduire les lignes de code, c’est écrire du HTML brut, exactement comme dans votre deuxième exemple SsortingngBuilder, mais en utilisant HtmlTextWriter.Write.

 writer.Write("
"); writer.Write(someTextVariable); writer.Write("
");

Ensuite, utiliser un SsortingngBuilder semble inutile. Et HtmlTextWriter s’assurera, au moins dans une certaine mesure, que le code HTML généré est conforme (bien que ce ne soit pas le cas dans le cas ci-dessus, lors de l’écriture de code HTML brut).