J'ai la conviction que le balisage doit rester dans le balisage et non dans le code derrière.
Je suis arrivé à une situation où je pense qu'il est acceptable de construire le code HTML dans le code derrière. J'aimerais avoir un certain consensus sur les bonnes ou les meilleures pratiques.
Quand est-il acceptable de construire du HTML dans le code derrière? Quelle est la meilleure méthode pour créer ce html? (exemple: Strings, StringBuilder, HTMLWriter, etc.)
Réponses:
Est-ce que l'utilisation de quelque chose comme Razor n'est pas applicable ici? Parce que si vous faites beaucoup de génération HTML en utilisant un moteur de vue, cela peut être beaucoup plus facile. Il a également été conçu pour être utilisé en dehors d'ASP.NET.
Cependant, parfois, ce n'est pas ce dont vous avez besoin. Avez-vous envisagé d'utiliser la classe TagBuilder qui fait partie de .net (mvc)? Il y a aussi le HtmlWriter dans System.Web.UI (pour les formulaires Web). Je recommanderais l'un d'entre eux si vous faites
Controls
ouHtml Helpers
.la source
J'utiliserais le pack d'agilité HTML pour assembler du HTML, puis l'écrire dans un fichier texte.
De nombreuses heures de travail ont été nécessaires pour rendre le pack d'agilité Html robuste et
compatibleHTML.Je pense qu'il comprend même un exemple d'application qui génère du HTML.
Depuis la page d'accueil:
la source
J'utiliserais htmltags pour créer du HTML.
Exemple:
Et puis CSQuery si je veux analyser HTML
Exemple:
la source
Il existe, bien sûr, des bibliothèques, telles que HTML Agility Pack, qui peuvent vous aider dans ces efforts.
Si vous ne voulez vraiment pas utiliser une bibliothèque existante et que vous voulez du code simple, bas et sale, j'aime l'idée d'abstraire certains des comportements comme une réponse précédente l'a déclaré. J'aime également l'idée d'utiliser un StringBuilder sous-jacent, par opposition à une chaîne pour quelques raisons:
Si je n'ai pas besoin d'un moteur HTML massivement conçu, je construirais une interface simple et intuitive
la source
Si vous finissez par n'utiliser que des chaînes, n'oubliez pas d'échapper tous les caractères réservés HTML dans vos données de sortie.
Je recommande cependant d'utiliser une classe ou une bibliothèque HTML au lieu de travailler directement avec des chaînes. HTMLWriter ressemble à un assez bon début.
la source
Près de deux ans après la publication d'origine - voici une solution qui a bien fonctionné pour moi. Dans le document cible, je place ce qui suit:
la fonction appelée ressemble à ceci:
Et la sortie résultante dans le navigateur est comme prévu:
Le nombre est: 0
Le nombre est: 1
Le nombre est: 2
Le nombre est: 3
Le nombre est: 4
Lorsque je vais voir la source, je trouve ce qui suit:
la source
FLAMME!
Je vais probablement obtenir un vote négatif pour cela, mais en tant qu'ancien concepteur qui a dû modifier le code HTML avant de vraiment en savoir beaucoup sur .NET, le code ci-dessus était beaucoup plus facile à comprendre que les méthodes qui résument la création HTML. Si vous pensez qu'un concepteur pourrait avoir à modifier votre code HTML, utilisez des chaînes simples comme celle-ci.
Quelque chose que je constate que beaucoup de développeurs manquent lorsqu'ils écrivent du HTML dans le code, c'est qu'en HTML, les guillemets simples ou doubles sont autorisés pour les attributs. Donc, au lieu d'échapper à toutes les guillemets dans le code (ce qui semble bizarre aux non-initiés), utilisez simplement des guillemets simples pour les guillemets html à l'intérieur de vos chaînes.
BIEN. Tout ce que vous, les haineux concaténants, cramponnez à mon représentant. Voici la façon «correcte» de le faire sans concaténation de chaînes, mais je maintiens mon opinion que toute page normale avec des tables normales ne présentera aucun problème de performances en dehors d'une échelle ridicule de type Google:
la source
+=
intérieur d'une boucle de cette façon n'est pas du tout mis à l'échelle; parce que les chaînes sont immuables, vous créez une toute nouvelle chaîne à chaque fois que vous le faites. UtilisezStringBuilder
plutôt un .If you think a designer might ever have to tweak your HTML, use simple strings like this.
est-il difficile à comprendre? La définition de certains codes horribles est celle qui achète des millisecondes de performances au prix de plusieurs secondes pour bien comprendre. De toute évidence, lorsque vous prévoyez que votre code sera visualisé ou maintenu par le plus petit dénominateur commun d'individu, il est très certainement possible de penser que l'écriture de code plus facile à comprendre ou à modifier est toujours meilleure que le code le plus propre ou le plus performant.