Ho un codice come questo. C'è un modo per semplificare la scrittura e la manutenzione? Utilizzo di 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}", "");
}
Potrei anche scrivere:
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");
Funzionerà, ma devo sostituire tutto"
con""
.
Tutte le risposte
Probabilmente stai meglio usando un file
HtmlTextWriter
o unXMLWriter
di una pianuraStringWriter
. Si prenderanno cura di scappare per te, oltre ad assicurarsi che il documento sia ben formato.Questa paginamostra le basi dell'utilizzo di
HtmlTextWriter
classe, il cui succo è:Quando mi occupo di questo problema in altre lingue scelgo una separazione tra codice e HTML. Qualcosa di simile a:
1.) Crea un modello HTML. uso
[varname]
segnaposto per contrassegnare il contenuto sostituito / inserito.2.) Riempi le variabili del tuo modello da un array o da una struttura / mappatura / dizionario
So che hai chiesto informazioni su C #, ma se sei disposto a utilizzare qualsiasi linguaggio .Net, ti consiglio vivamente Visual Basic per questo problema esatto. Visual Basic ha una funzionalità chiamata XML Literals che ti consentirà di scrivere codice come questo.
Ciò ti consente di scrivere HTML semplice con buchi di espressione nel vecchio stile ASP e rende il tuo codice super leggibile. Sfortunatamente questa funzionalità non è in C #, ma potresti scrivere un singolo modulo in VB e aggiungerlo come riferimento al tuo progetto C #.
La scrittura in Visual Studio consente inoltre un rientro appropriato per la maggior parte dei letterali XML e degli interi di espressioni. L'indentazione per i fori di espressione è migliore in VS2010.
Usa un file
XDocument
per creare il DOM, quindi scriverlo utilizzando un fileXmlWriter
. Questo ti darà una notazione meravigliosamente concisa e leggibile così come un output ben formattato.Prendi questo programma di esempio:
Questo genera il seguente output:
Potresti usare
System.Xml.Linq
oggetti. Sono stati completamente ridisegnati dal vecchioSystem.Xml
giorni che hanno reso la creazione di XML da zero davvero fastidiosa.Oltre al doctype immagino, potresti facilmente fare qualcosa come:
Il modo più semplice è usare un oggetto XmlWriter. Questo può essere usato per produrre HTML valido e si prenderà cura di tutte le brutte sequenze di escape per te.
Puoi usareModelli T4per generare Html (o qualsiasi altro) dal tuo codice. guarda questo:http://msdn.microsoft.com/en-us/library/ee844259.aspx
Se stai cercando di creare un documento HTML simile a come creeresti un documento XML in C #, potresti provare la libreria open source di Microsoft, ilHtml Agility Pack.
Fornisce un oggetto HtmlDocument che ha un'API molto simile a
System.Xml.XmlDocument
classe.È possibile utilizzare ASP.NET per generare il codice HTML al di fuori del contesto delle pagine web.Ecco un articoloche mostra come si può fare.
È possibile utilizzare alcune librerie open source di terze parti per generare HTML verificato (X) fortemente tipizzato, comeCityLizard Frameworko Sharp DOM.
AggiornarePer esempio
Questa non è una soluzione generica, tuttavia, se il tuo pupo deve avere o mantenere modelli di posta elettronica, System.Web ha una classe incorporata chiamataMailDefinition. Questa classe viene utilizzata dai controlli di appartenenza di ASP.NET per creare messaggi di posta elettronica HTML.
Fa lo stesso tipo di "sostituzione di stringa" come menzionato sopra, ma racchiude tutto in un MailMessage per te.
Ecco un esempio da MSDN:
Con l'introduzione di Razor in ASP.net MVC, il modo migliore per scrivere HTML in C # è con il motore Razor.
Modello:
Per un esempio completo, vedereQui
Potresti scrivere le tue classi con il suo metodo Render e altri attributi, per evitare un gran casino se lo usi molto, e quindi usare anche HTMLWriter o xmlwriter. Questa logica viene utilizzata nelle pagine asp.net, è possibile ereditare da webControl e sovrascrivere ilmetodo di rendering, che è ottimo se stai sviluppando controlli lato server.
Questopotrebbe essere un buon esempio.
Saluti
Dipende davvero da cosa stai cercando e, in particolare, dal tipo di performance che devi davvero offrire.
Ho visto soluzioni ammirevoli per lo sviluppo di HTML fortemente tipizzato (modelli di controllo completi, siano essi controlli Web ASP.NET o simili) che aggiungono semplicemente una straordinaria complessità a un progetto. In altre situazioni è perfetto.
In ordine di preferenza nel mondo C #,
Ho scritto queste lezioni che mi hanno servito bene. È semplice ma pragmatico.
HSharp è una libreria utilizzata per analizzare il linguaggio di markup come HTML in modo semplice e veloce. Installare:
PM> Install-Package Obisoft.HSharp
e output:
Stavo cercando qualcosa che assomigliasse a jquery per generare dom in C # (non ho bisogno di analizzare). Sfortunatamente non ho avuto fortuna nel trovare una soluzione leggera, quindi ho creato questa semplice classe ereditata da System.Xml.Linq.XElement. La caratteristica chiave è che puoi concatenare l'operatore come quando usi jquery in javascript, quindi è più scorrevole. Non è completo ma fa quello che mi serve e se c'è interesse posso avviare un git.
Campione:
uscita dal codice sopra:
Leave a Reply