Van ilyen kódom. Van-e mód arra, hogy megkönnyítse az írást és a karbantartást? A C # .NET 3.5 használata.
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}", "");
}
Írhatnék is:
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");
Működni fog, de le kell cserélnem az összeset"
val vel""
.
Minden válasz
Valószínűleg jobban jár, ha használ egy
HtmlTextWriter
vagy egyXMLWriter
mint egy síkságStringWriter
. Ők gondoskodnak a menekülésről az Ön számára, valamint arról, hogy a dokumentum megfelelő formában legyen.Ez az oldalbemutatja a
HtmlTextWriter
osztály, amelynek lényege:Amikor más nyelvekkel foglalkozom ezzel a problémával, elválasztom a kódot és a HTML-t. Valami hasonló:
1.) Hozzon létre egy HTML sablont. használat
[varname]
helyőrzők a kicserélt / beillesztett tartalom jelölésére.2.) Töltse ki a sablonváltozókat egy tömbből vagy szerkezetből / leképezésből / szótárból
Tudom, hogy a C # -val kapcsolatban kérdezett, de ha hajlandó bármilyen .Net nyelvet használni, akkor nagyon ajánlom a Visual Basic alkalmazást ehhez a problémához. A Visual Basic rendelkezik az XML Literals nevű funkcióval, amely lehetővé teszi, hogy ilyen kódot írjon.
Ez lehetővé teszi, hogy egyenes HTML-t írjon, kifejezési lyukakkal a régi ASP stílusban, és szuper olvashatóvá teszi a kódot. Sajnos ez a szolgáltatás nem szerepel a C # fájlban, de írhat egyetlen modult a VB-be, és hozzáadhatja referenciaként a C # projektjéhez.
A Visual Studio-ban történő írás lehetővé teszi a megfelelő behúzást a legtöbb XML-literál és kifejezés-egész számára. A kifejezési lyukak behúzása jobb a VS2010-ben.
Használjon egy
XDocument
a DOM létrehozásához, majd írd ki egyXmlWriter
. Ez csodálatosan tömör és olvasható jelölést, valamint szépen formázott kimenetet eredményez.Vegyük ezt a mintaprogramot:
Ez a következő kimenetet generálja:
Használhatnád
System.Xml.Linq
tárgyakat. Teljesen átalakították a régitőlSystem.Xml
napok, amelyek nagyon idegesítővé tették az XML elkészítését a semmiből.Azt hiszem, a doctype-n kívül könnyedén megteheted a következőket:
A legegyszerűbb módszer az XmlWriter objektum használata. Ez felhasználható érvényes HTML előállítására, és gondoskodik az összes csúnya menekülési szekvenciáról.
Te tudod használniT4 sablonokHtml (vagy bármely más) előállításához a kódodból. ezt nézd:http://msdn.microsoft.com/en-us/library/ee844259.aspx
Ha olyan HTML dokumentumot szeretne létrehozni, amely hasonló ahhoz, ahogyan létrehozna egy XML dokumentumot a C # formátumban, akkor kipróbálhatja a Microsoft nyílt forráskódú könyvtárát, aHtml Agility Pack.
Olyan HtmlDocument objektumot biztosít, amely nagyon hasonló API-val rendelkezik
System.Xml.XmlDocument
osztály.Az ASP.NET segítségével létrehozhatja HTML-jét a weboldalak kontextusán kívül.Itt egy cikkez megmutatja, hogyan lehet megtenni.
Használhat néhány harmadik féltől származó nyílt forráskódú könyvtárat erős, gépelt, ellenőrzött (X) HTML-ek előállításához, példáulCityLizard Frameworkvagy Sharp DOM.
FrissítésPéldául
Ez nem általános megoldás, azonban ha a tanulónak e-mail sablonokat kell tartania vagy fenntartania, akkor a System.Web-nek van egy beépített osztálya,MailDefinition. Ezt az osztályt használják az ASP.NET tagsági vezérlők HTML e-mailek létrehozására.
Helyettesíti-e a fent említett dolgokat, de az egészet egy MailMessage-be csomagolja az Ön számára.
Íme egy példa az MSDN-től:
A Razor bevezetésével az ASP.net MVC-ben a HTML C # formátumban történő írásának legjobb módja a Razor Engine.
Sablon:
A teljes mintát lásditt
Írhatná a saját osztályait a Render módszerével és egy másik attribútummal, hogy elkerülje a nagy rendetlenséget, ha sokat használja, majd használja a HTMLWritert vagy az xmlwritert is. Ezt a logikát használják az asp.net oldalakon. Örökölhet a webvezérlésből, és felülírhatja arenderelési módszer, ami nagyszerű, ha szerveroldali vezérlőket fejlesztesz.
Ezjó példa lehet.
Üdvözlettel
Nagyon függ attól, hogy mire készülsz, és konkrétan attól, hogy milyen teljesítményt kell igazán felajánlanod.
Csodálatos megoldásokat láttam az erősen tipizált HTML fejlesztéshez (teljes vezérlési modellek, legyenek azok az ASP.NET webvezérlők, vagy hasonlóak), amelyek csak elképesztő bonyolultságot adnak a projektnek. Más helyzetekben tökéletes.
A C # világ preferencia sorrendjében
Ezeket az osztályokat írtam, amelyek jól szolgáltak nekem. Ez egyszerű, de pragmatikus.
A HSharp egy olyan könyvtár, amelyet könnyen és gyorsan elemezhet a jelölő nyelv, például a HTML. Telepítés:
PM> Install-Package Obisoft.HSharp
és kimenet:
Valami olyasmit kerestem, amelyik jquery-nek tűnt a domén létrehozásához a C # -ben (nem kell elemeznem). Sajnos nincs szerencséje a könnyű megoldás megtalálásában, ezért létrehoztam ezt az egyszerű osztályt, amelyet a System.Xml.Linq.XElement örökölt. A legfontosabb jellemző az, hogy az operátort úgy láncolhatja, mint amikor a jquery-t használja a javascriptben, így folyékonyabb. Ez nem teljesen szerepel, de megteszi, amire szükségem van, és ha van érdeklődés, elkezdhetek egy git-et.
Minta:
kimenet a fenti kódból:
Leave a Reply