Abbiamo un gruppo di entità di dominio che dovrebbero essere renderizzate in un formato html, che mostra i loro dettagli in una finestra pop-up.Rendering di oggetti C# in HTML
Sarei felice di fare qualcosa di simile:
Product product = new Product(...);
product.ToHtml(); // or: HtmlRenderer.Render(Product);
ma il mio problema principale è come fare questa roba da dietro. Ho 3 diverse risposte:
1. Render Per Codice:
posso semplicemente scrivere il mio codice per il rendering HTML all'interno del metodo ToHTML (C#) - il problema è che si tratta di troppo statico. se vuoi spostare un po 'l'intestazione verso il centro, devi cambiare il codice. inoltre, è molto difficile leggere il rientro Html in C#.
2. Utilizzando XSL:
XSL file possono facilmente gestire il template HTML e utilizzando XSLT posso trasformare file XML al posto giusto dei documenti. il parser già scritto da qualcun altro (solo bisogno di imparare la sintassi) ** per questo avremo bisogno che ogni oggetto possa serializzare su Xml. e se l'oggetto è cambiato -> l'Xml sarà cambiato -> anche il xslt deve essere cambiato ** questo mi darà anche la possibilità di indentare facilmente il codice HTML per esempio: aggiungere funzionalità css e \ o cambiare il design html
3. utilizzando altri template engine:
scrivere il mio C# -> Html modello del motore in modo che leggerà il modello da file (* .template) e inserirà il diritto di proprietà nel posto giusto di il modello usando la riflessione. ** in questa soluzione abbiamo molti problemi a cui possiamo pensare, ad esempio: come dovrebbe essere la sintassi? questa cosa è ok? % Nome%% Descrizione% e come possiamo gestire gli array? ** forse possiamo usare un motore esistente (Brail o T4-Templating)?
Cosa preferisci? conosci un buon motore? per ora preferisco la seconda soluzione, ma sarà molto lento.
grazie
Non lavoro in un team Web, sto rendendo object-as-html e li mando a chiunque altro - chi può usarlo in wpf \ palm \ web-site o altra tecnologia, quindi suppongo che ascx non sia buono per me. – rabashani
In tal caso, è possibile serializzarlo in formato JSON e inviarlo per consentire ad altri utenti di utilizzarlo. – shahkalpesh
ancora non abbastanza buono voglio che tutti ottengano la stessa interfaccia utente. non gestisce autonomamente la logica di rendering. – rabashani