vehicle nys motor for department c# template-engine

c# - nys - certificate of title for a vehicle



Motor de plantilla C# (7)

¿Has mirado XSLT ? Tendrá que comenzar con su formato de datos fuente en XML, quizás al xmlserializar sus objetos de datos. ¡Puedes hacer loops y declaraciones con facilidad!

Kathleen Dollard tiene un libro sobre la generación de código a través de XSLT .

Personalmente, soy un gran fanático de T4 (especialmente al generar C #), pero es posible que, dado que XML y HTML son sus tipos de salida, XSLT lo cubra. Además, es muy multiplataforma.

Estoy buscando un código independiente, fácil de usar desde C #, motor de plantillas. Quiero crear archivos HTML y XML con marcadores de posición para datos y llenarlos con datos de mi código.

El motor necesita admitir bucles (duplicar partes de la plantilla para formar más de un objeto) y condiciones (agregar partes de la plantilla al HTML / XML final solo si algunas condiciones son ciertas). ¿Puede alguien recomendarme una buena opción y agregar un enlace a más o menos ejemplos de código y una documentación sobre cómo usar el componente recomendado para mis necesidades?

También necesito usar bucles para duplicar filas de tablas, o incluso tablas enteras (en la versión HTML) y elementos complejos (en la versión XML).



Es posible que necesite este .NET Template Engine .

Código de plantilla:

$Book.StaticId$ ID: $bk.BookId$ - Author: $bk.Author.Name$ Length of the author''s Name: $bk.Author.Name.Length$

C # Code:

class Author { public string Name { get { return "John Borders"; } } } class Book { public static string StaticId { get { return "AABB"; } } public int BookId { get { return 100; } } public Author Author { get { return new Author(); } } } public class PropertySample1 { [STAThread] static void Main() { TemplateEngine dt = new TemplateEngine(); dt.LoadFromFile("Template.tpl"); Book book = new Book(); dt.SetValue("bk", book); dt.UsingNamespace("CSharp,Demo"); string output = dt.Run(); Console.WriteLine(output); } }

La salida es:

AABB ID: 100 - Author: John Borders 12




Tengo un motor de creación de plantillas incorporado en mi biblioteca de clase que se ve y funciona de forma similar al ASP de estilo antiguo, o T4 para el caso.

Básicamente, escribes el código C # en los bloques <%%> y, por lo tanto, puedes hacer la mayoría de las cosas que C # puede hacer, con la limitación de que todo el archivo de la plantilla se compila en un único método. En otras palabras, no puede definir clases de ayuda y tal dentro de la plantilla, pero para los métodos de ayuda puede hacer métodos anónimos.

Ejemplo:

<% var firstname = "Bob"; var count = 10; for (Int32 index = 0; index < count; index++) { %> <%= firstname %> x <%= index+1 %>/<%= count %> <% } %>

Esto se compilará a una clase C # en otro dominio de aplicación, y se puede ejecutar para devolver la cadena que contiene el texto producido.

También puede pasar un argumento a la plantilla y también hacer referencia a las bibliotecas de clases, lo que significa que puede pasar estructuras de datos personalizadas, o acceder a la capa de acceso a datos o código de lógica de negocios desde su plantilla.

Si desea verlo, el código está disponible en mi biblioteca de clase desde mi repositorio o página web de Subversion:

Para los repositorios de subversión necesita un nombre de usuario y contraseña, ambos son "invitados", sin las comillas.

El código está en el proyecto / ensamblaje LVK.Text.Templating.

Además, avíseme (consulte el correo electrónico en la página de perfil o deje un comentario) y le brindaré algunos ejemplos más.


SmartFormat es una biblioteca bastante simple que cumple con todos sus requisitos. Está enfocado en componer texto en "lenguaje natural" y es ideal para generar datos a partir de listas o aplicar lógica condicional.

La sintaxis es muy similar a String.Format , y es muy simple y fácil de aprender y usar. Aquí hay un ejemplo de la sintaxis de la documentación:

Smart.Format("{Name}''s friends: {Friends:{Name}|, |, and}", user) // Result: "Scott''s friends: Michael, Jim, Pam, and Dwight"

La biblioteca es de código abierto y fácilmente extensible, por lo que también puede mejorarla con funciones adicionales.