c# - Schreiben Sie HTML in einen String
This question and all comments follow the
"Attribution Required."
Ähnliche Probleme
- c# - Wie schreibe ich einen Backslash (\) in eine Zeichenfolge?
- Wie kann ich eine Zeichenfolge in C in Kleinbuchstaben schreiben?
- asp.net mvc - Schreiben / Ausgeben von HTML-Zeichenfolgen ohne Umgehung
- Schreiben einer Zeichenfolge an das Ende einer Datei (C ++)
- c# - Benutzerdefinierte HTML-Protokolle schreiben
- Weitere ähnliche Fragen >>
Alle Antworten
Du bist wahrscheinlich besser dran mit einem
HtmlTextWriter
oder einXMLWriter
als eine EbeneStringWriter
. Sie kümmern sich darum, für Sie zu fliehen und sicherzustellen, dass das Dokument gut geformt ist.Diese Seitezeigt die Grundlagen der Verwendung von
HtmlTextWriter
Klasse, deren Kern ist:Wenn ich mich in anderen Sprachen mit diesem Problem befasse, strebe ich eine Trennung von Code und HTML an. Etwas wie:
1.) Erstellen Sie eine HTML-Vorlage. verwenden
[varname]
Platzhalter zum Markieren von ersetzten / eingefügten Inhalten.2.) Füllen Sie Ihre Vorlagenvariablen aus einem Array oder einer Struktur / Zuordnung / einem Wörterbuch
Ich weiß, dass Sie nach C # gefragt haben, aber wenn Sie bereit sind, eine .NET-Sprache zu verwenden, empfehle ich Visual Basic für genau dieses Problem. Visual Basic verfügt über eine Funktion namens XML-Literale, mit der Sie Code wie diesen schreiben können.
Auf diese Weise können Sie direktes HTML mit Ausdruckslöchern im alten ASP-Stil schreiben und Ihren Code super lesbar machen. Leider ist diese Funktion nicht in C # enthalten, aber Sie können ein einzelnes Modul in VB schreiben und es als Referenz zu Ihrem C # -Projekt hinzufügen.
Das Schreiben in Visual Studio ermöglicht auch die korrekte Einrückung für die meisten XML-Literale und Ausdruckswerte. Die Einrückung für die Ausdruckslöcher ist in VS2010 besser.
Benutze ein
XDocument
Um das DOM zu erstellen, schreiben Sie es mit einem ausXmlWriter
. Dies gibt Ihnen eine wunderbar präzise und lesbare Notation sowie eine schön formatierte Ausgabe.Nehmen Sie dieses Beispielprogramm:
Dies erzeugt die folgende Ausgabe:
Du könntest benutzen
System.Xml.Linq
Objekte. Sie wurden von den alten völlig neu gestaltetSystem.Xml
Tage, an denen es wirklich ärgerlich war, XML von Grund auf neu zu erstellen.Anders als der Doctype, denke ich, könnten Sie leicht etwas tun wie:
Am einfachsten ist es, ein XmlWriter-Objekt zu verwenden. Dies kann verwendet werden, um gültiges HTML zu erstellen, und kümmert sich für Sie um alle unangenehmen Escape-Sequenzen.
Sie können verwendenT4-Vorlagenzum Generieren von HTML (oder einem beliebigen) aus Ihrem Code. Sieh dir das an:http://msdn.microsoft.com/en-us/library/ee844259.aspx
Wenn Sie ein HTML-Dokument erstellen möchten, das dem Erstellen eines XML-Dokuments in C # ähnelt, können Sie die Open Source-Bibliothek von Microsoft, dieHTML Agility Pack.
Es stellt ein HtmlDocument-Objekt bereit, das eine sehr ähnliche API wie das hat
System.Xml.XmlDocument
Klasse.Sie können ASP.NET verwenden, um Ihren HTML-Code außerhalb des Kontexts von Webseiten zu generieren.Hier ist ein Artikeldas zeigt, wie es geht.
Sie können einige Open-Source-Bibliotheken von Drittanbietern verwenden, um stark typisiertes verifiziertes (X) HTML zu generieren, zCityLizard Frameworkoder Sharp DOM.
AktualisierenZum Beispiel
Dies ist jedoch keine generische Lösung. Wenn Ihre Schüler E-Mail-Vorlagen haben oder verwalten sollen, verfügt System.Web über eine integrierte Klasse namensMailDefinition. Diese Klasse wird von den ASP.NET-Mitgliedschaftssteuerelementen zum Erstellen von HTML-E-Mails verwendet.
Ersetzt die gleiche Art von "Zeichenfolge" die oben genannten Dinge, packt jedoch alles in eine MailMessage für Sie.
Hier ist ein Beispiel von MSDN:
Mit der Einführung von Razor in ASP.net MVC können Sie HTML in C # am besten mit der Razor Engine schreiben.
Vorlage:
Ein vollständiges Beispiel finden Sie unterHier
Sie können Ihre eigenen Klassen mit der Render-Methode und anderen Attributen schreiben, um ein großes Durcheinander zu vermeiden, wenn Sie sie häufig verwenden, und dann auch den HTMLWriter oder den XML-Writer verwenden. Diese Logik wird auf den asp.net-Seiten verwendet. Sie können von webControl erben und die überschreibenRender-Methode, was großartig ist, wenn Sie serverseitige Steuerelemente entwickeln.
Diesekönnte ein gutes Beispiel sein.
Grüße
Es hängt wirklich davon ab, was Sie wollen und welche Art von Leistung Sie wirklich bieten müssen.
Ich habe bewundernswerte Lösungen für die stark typisierte HTML-Entwicklung gesehen (vollständige Steuerungsmodelle, sei es ASP.NET Web Controls oder ähnliches), die einem Projekt nur erstaunliche Komplexität verleihen. In anderen Situationen ist es perfekt.
In der Reihenfolge der Präferenz in der C # -Welt,
Ich habe diese Kurse geschrieben, die mir gut gedient haben. Es ist einfach und doch pragmatisch.
HSharp ist eine Bibliothek, mit der Markup-Sprachen wie HTML einfach und schnell analysiert werden können. Installieren:
PM> Install-Package Obisoft.HSharp
und Ausgabe:
Ich suchte nach etwas, das wie eine Abfrage zum Generieren von Dom in C # aussah (ich muss nicht analysieren). Leider kein Glück, eine einfache Lösung zu finden, also habe ich diese einfache Klasse erstellt, die von System.Xml.Linq.XElement geerbt wird. Das Hauptmerkmal ist, dass Sie den Operator wie bei der Verwendung von jquery in Javascript verketten können, damit er flüssiger ist. Es ist nicht voll ausgestattet, aber es macht das, was ich brauche und wenn es Interesse gibt, kann ich einen Git starten.
Stichprobe:
Ausgabe vom obigen Code:
Leave a Reply