J'ai un code comme celui-ci. Existe-t-il un moyen de faciliter la rédaction et la maintenance? Utilisation de C # .NET 3.5.
string header(string title)
{
StringWriter s = new StringWriter();
s.WriteLine("{0}","<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">");
s.WriteLine("{0}", "<html>");
s.WriteLine("<title>{0}</title>", title);
s.WriteLine("{0}","<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">");
s.WriteLine("{0}", "</head>");
s.WriteLine("{0}", "<body>");
s.WriteLine("{0}", "");
}
Je pourrais aussi simplement écrire:
s.WriteLine("{0}", @"blah blah
many
new
lines
blah UHY#$&_#$_*@Y KSDSD<>\t\t\t\t\t\tt\t\t\\\t\t\t\t\\\h\th'\h't\th
hi
done");
Cela fonctionnera, mais je dois tout remplacer"
avec""
.
Toutes les réponses
Vous feriez probablement mieux d'utiliser un
HtmlTextWriter
ou unXMLWriter
qu'une plaineStringWriter
. Ils se chargeront de s'échapper pour vous, ainsi que de s'assurer que le document est bien formé.Cette pagemontre les bases de l'utilisation du
HtmlTextWriter
classe, dont l'essentiel étant:Lorsque je traite ce problème dans d'autres langues, j'opte pour une séparation du code et du HTML. Quelque chose comme:
1.) Créez un modèle HTML. utilisation
[varname]
espaces réservés pour marquer le contenu remplacé / inséré.2.) Remplissez vos variables de modèle à partir d'un tableau ou d'une structure / mappage / dictionnaire
Je sais que vous avez posé des questions sur C #, mais si vous êtes prêt à utiliser un langage .Net, je recommande vivement Visual Basic pour ce problème précis. Visual Basic possède une fonctionnalité appelée littéraux XML qui vous permettra d'écrire du code comme celui-ci.
Cela vous permet d'écrire du HTML simple avec des trous d'expression dans l'ancien style ASP et rend votre code super lisible. Malheureusement, cette fonctionnalité n'est pas en C #, mais vous pouvez écrire un seul module en VB et l'ajouter comme référence à votre projet C #.
L'écriture dans Visual Studio permet également une indentation appropriée pour la plupart des littéraux XML et des ensembles d'expressions. L'indentation des trous d'expression est meilleure dans VS2010.
Utilisez un
XDocument
pour créer le DOM, puis écrivez-le en utilisant unXmlWriter
. Cela vous donnera une notation merveilleusement concise et lisible ainsi qu'une sortie bien formatée.Prenez cet exemple de programme:
Cela génère la sortie suivante:
Vous pourriez utiliser
System.Xml.Linq
objets. Ils ont été totalement repensés de l'ancienSystem.Xml
jours qui ont rendu la construction XML à partir de zéro vraiment ennuyeuse.En dehors du doctype, je suppose, vous pouvez facilement faire quelque chose comme:
Le moyen le plus simple consiste à utiliser un objet XmlWriter. Cela peut être utilisé pour produire du HTML valide et s'occupera de toutes les mauvaises séquences d'échappement pour vous.
Vous pouvez utiliserModèles T4pour générer Html (ou tout autre) à partir de votre code. regarde ça:http://msdn.microsoft.com/en-us/library/ee844259.aspx
Si vous cherchez à créer un document HTML similaire à la façon dont vous créeriez un document XML en C #, vous pouvez essayer la bibliothèque open source de Microsoft, lePack d'agilité HTML.
Il fournit un objet HtmlDocument qui a une API très similaire à la
System.Xml.XmlDocument
classe.Vous pouvez utiliser ASP.NET pour générer votre HTML en dehors du contexte des pages Web.Voici un articlecela montre comment cela peut être fait.
Vous pouvez utiliser des bibliothèques open-source tierces pour générer du code HTML vérifié (X) à typage fort, tel queCadre CityLizardou Sharp DOM.
Mettre à jourPar exemple
Ce n'est pas une solution générique, cependant, si votre objectif est d'avoir ou de maintenir des modèles de courrier électronique, System.Web a une classe intégrée appeléeMailDefinition. Cette classe est utilisée par les contrôles d'appartenance ASP.NET pour créer des e-mails HTML.
Est-ce que le même genre de «chaîne remplace» les choses comme mentionné ci-dessus, mais emballe le tout dans un MailMessage pour vous.
Voici un exemple de MSDN:
Avec l'introduction de Razor dans ASP.net MVC, la meilleure façon d'écrire du HTML en C # est d'utiliser Razor Engine.
Modèle:
Pour un exemple complet, voirici
Vous pouvez écrire vos propres classes avec sa méthode Render, et d'autres attributs, pour éviter un grand désordre si vous l'utilisez beaucoup, puis utiliser également HTMLWriter ou xmlwriter. Cette logique est utilisée dans les pages asp.net, vous pouvez hériter de webControl et remplacer leméthode de rendu, ce qui est idéal si vous développez des contrôles côté serveur.
Cepourrait être un bon exemple.
Cordialement
Cela dépend vraiment de ce que vous recherchez, et plus précisément du type de performance que vous devez vraiment offrir.
J'ai vu des solutions admirables pour le développement HTML fortement typé (modèles de contrôle complets, que ce soit des contrôles Web ASP.NET ou similaires) qui ajoutent simplement une complexité incroyable à un projet. Dans d'autres situations, c'est parfait.
Par ordre de préférence dans le monde C #,
J'ai écrit ces cours qui m'ont bien servi. C'est simple mais pragmatique.
HSharp est une bibliothèque utilisée pour analyser facilement et rapidement un langage de balisage comme HTML. Installer:
PM> Install-Package Obisoft.HSharp
et sortie:
Je cherchais quelque chose qui ressemblait à jquery pour générer dom en C # (je n'ai pas besoin d'analyser). Malheureusement, pas de chance pour trouver une solution légère, j'ai donc créé cette classe simple héritée de System.Xml.Linq.XElement. La caractéristique clé est que vous pouvez chaîner l'opérateur comme lorsque vous utilisez jquery en javascript pour qu'il soit plus fluide. Ce n'est pas complet mais il fait ce dont j'ai besoin et s'il y a de l'intérêt, je peux démarrer un git.
Échantillon:
sortie du code ci-dessus:
Leave a Reply