Ich bin der Meinung, dass Markups im Markup und nicht im Code dahinter bleiben sollten.
Ich bin in eine Situation gekommen, in der es meiner Meinung nach akzeptabel ist, den HTML-Code dahinter zu erstellen. Ich hätte gerne einen Konsens darüber, was die besten Praktiken sind oder sein sollten.
Wann ist es akzeptabel, HTML im Code dahinter zu erstellen? Was ist die beste Methode, um dieses HTML zu erstellen? (Beispiel: Strings, StringBuilder, HTMLWriter usw.)
Antworten:
Benutzt sowas Razor hier nicht anwendbar? Denn wenn Sie eine Menge HTML-Generierung mit einer Ansichts-Engine durchführen, kann dies viel einfacher sein. Es wurde auch für die Verwendung außerhalb von ASP.NET entwickelt.
Manchmal ist das jedoch nicht das, was Sie brauchen. Haben Sie darüber nachgedacht, die TagBuilder- Klasse zu verwenden, die Teil von .net (mvc) ist? Es gibt auch den HtmlWriter in System.Web.UI (für Webformulare). Ich würde eines davon empfehlen, wenn du
Controls
oder machstHtml Helpers
.quelle
Ich würde das Html Agility Pack verwenden , um HTML zusammenzustellen und es dann in eine Textdatei zu schreiben.
Es wurden viele Arbeitsstunden aufgewendet, um das HTML-Agility-Pack robust und
HTML-kompatibel zu machen.Ich denke, es enthält sogar eine Beispielanwendung, die HTML generiert.
Von der Homepage:
quelle
Ich würde htmltags verwenden , um HTML zu erstellen.
Beispiel:
Und dann CSQuery wenn ich HTML analysieren möchte
Beispiel:
quelle
Natürlich gibt es Bibliotheken wie das HTML Agility Pack, die Sie bei diesen Bemühungen unterstützen können.
Wenn Sie wirklich keine vorhandene Bibliothek verwenden möchten und einfachen, heruntergekommenen Code möchten, mag ich die Idee, einige der Verhaltensweisen wie in einer vorherigen Antwort zu abstrahieren. Ich mag auch die Idee, einen zugrunde liegenden StringBuilder zu verwenden, im Gegensatz zu einem String aus ein paar Gründen:
Wenn ich keine massiv entwickelte HTML-Engine benötige, würde ich eine einfache, intuitive Benutzeroberfläche erstellen
quelle
Wenn Sie nur Zeichenfolgen verwenden, vergessen Sie nicht, alle für HTML reservierten Zeichen in Ihren Ausgabedaten zu maskieren.
Ich empfehle jedoch, eine HTML-fähige Klasse oder Bibliothek zu verwenden, anstatt direkt mit Strings zu arbeiten. HTMLWriter sieht nach einem ziemlich guten Start aus.
quelle
Fast zwei Jahre nach dem ursprünglichen Post - hier ist eine Lösung, die für mich gut funktioniert hat. Im Zieldokument platziere ich Folgendes:
Die aufgerufene Funktion sieht folgendermaßen aus:
Und die resultierende Ausgabe im Browser ist wie erwartet:
Die Nummer lautet: 0
Die Nummer lautet: 1
Die Nummer lautet: 2
Die Nummer lautet: 3
Die Nummer lautet: 4
Wenn ich zum Quelltext gehe, finde ich Folgendes:
quelle
FLAMME AN!
Ich werde wahrscheinlich dafür abgelehnt werden, aber als ehemaliger Designer, der HTML im Code optimieren musste, bevor ich wirklich viel über .NET wusste, war der obige Code viel einfacher zu verstehen als die Methoden, die HTML-Erstellung abstrahieren. Wenn Sie der Meinung sind, dass ein Designer jemals an Ihrem HTML-Code arbeiten muss, verwenden Sie einfache Zeichenfolgen wie diese.
Etwas, was viele Entwickler vermissen, wenn sie HTML in Code schreiben, ist, dass in HTML einfache oder doppelte Anführungszeichen für Attribute zulässig sind. Anstatt also alle Anführungszeichen im Code zu maskieren (was für den Nichtinitiierten verdammt witzig aussieht), verwenden Sie einfach einfache Anführungszeichen für die HTML-Anführungszeichen in Ihren Zeichenfolgen.
FEIN. Alles, was Sie Hasser verketten, verkrampft meinen Repräsentanten. Hier ist die 'richtige' Möglichkeit, dies ohne Verkettung von Zeichenfolgen zu tun, aber ich stehe zu meiner Meinung, dass jede normale Seite mit normalen Tabellen außerhalb einer lächerlichen Google-Skala keine Leistungsprobleme aufwirft:
quelle
+=
einer Schleife auf diese Weise überhaupt nicht skalierbar. Da Zeichenfolgen unveränderlich sind, erstellen Sie jedes Mal eine neue Zeichenfolge. Verwenden SieStringBuilder
stattdessen a.If you think a designer might ever have to tweak your HTML, use simple strings like this.
ist schwer zu verstehen? Die Definition von schrecklichem Code durch manche Leute ist diejenige, die Millisekunden an Leistung einkauft, wobei es viele Sekunden dauert, bis sie vollständig verstanden sind. Wenn Sie davon ausgehen, dass Ihr Code vom kleinsten gemeinsamen Nenner einer Person angezeigt oder verwaltet wird, kann mit Sicherheit davon ausgegangen werden, dass das Schreiben von Code, der einfacher zu verstehen oder zu optimieren ist, immer besser ist als der sauberste oder leistungsstärkste Code.