Pregunta

¿Es posible usar el motor de plantillas asp (con la clase de código subyacente parcial, dinámico <% ...% > bloques y demás) para generar no HTML? Quiero tener una forma limpia y fácil de generar código dinámicamente. (Específicamente, quiero generar código LaTeX poblado con valores de una base de datos).

Actualmente mis plantillas de LaTeX son cadenas de recursos con marcadores de posición que encadenaré. Reemplace con los valores de la base de datos. Esta solución rápidamente se volvió muy difícil de mantener y limpiar. Realmente me gustaría usar los bloques dinámicos del marcado aspx, pero no estoy seguro de a) si aspx arrojará un ajuste cuando la salida no sea HTML, o b) cómo representar el resultado en un archivo .tex .

El código generador en sí está ubicado en un C # .dll. Estamos usando .NET 3.5

¿Es esto posible? Gracias por adelantado.

¿Fue útil?

Solución

La plantilla T4 que viene con Visual Studio 2008 de forma nativa o con Visual Studio 2005 SDK, puede generar casi todo lo que desee.

Puede tener más información en los siguientes enlaces:

Estoy bastante seguro de que todos esos enlaces son un buen comienzo para su búsqueda.

Si desea generar plantillas T4 fuera de Visual Studio, existe una tarea personalizada de MSBuild para invocar una plantilla T4 ( enlace )

Aquí hay una muestra de " Ejecutar " código de la tarea MSBuild. Haga clic aquí para ver el código fuente :

public override bool Execute()
{
    bool success = false;

    //read in the template:
    string template = File.ReadAllText(this.TemplatePath);

    //replace tags with property and item group values:
    ProjectHelper helper = new ProjectHelper(this);
    template = helper.ResolveProjectItems(template);

    //copy the template to a temp file:
    this._tempFilePath = Path.GetTempFileName();
    File.WriteAllText(this._tempFilePath, template);

    //shell out to the exe:
    ProcessHelper.Run(this, TextTransform.ToolPath, TextTransform.ExeName, string.Format(TextTransform.ArgumentFormat, this.OutputPath, this._tempFilePath));
    success = true;

    return success;
}

Otros consejos

No veo por qué no. Alguien que conocí en un trabajo anterior creó un generador de envoltura de base de datos usando páginas ASP.NET y el control del repetidor para insertar propiedades. Luego escribió el contenido del documento en un archivo fuente.

Si le preocupa que ASP.NET se ajuste, puede crear un caso de prueba muy limitado y verlo usted mismo. No debería tomar mucho tiempo probar una teoría y hacerle saber si satisface sus necesidades.

Ciertamente es posible. La mayoría de los controles del servidor estarán fuera, ya que emitirán automáticamente el marcado HTML. Pero, puede enlazar datos a la página y usar expresiones de enlace de datos. Visual Studio sin duda se quejará de un marcado no válido.

Luego debe ejecutar sus páginas a través de Cassini o la canalización ASP.NET para obtener el resultado. Tengo un arnés de prueba unitaria en algún lugar que hace eso, y es sorprendentemente fácil.

Una idea mejor , sin embargo, probablemente sería usar un generador de código. Algo como CodeSmith debería funcionar bien, o incluso el integrado de Visual Studio T4 le brinda mucha flexibilidad sin intentar vincularlo con HTML.

Para la generación de código, debería echar un vistazo a las características de plantillas T4. Utiliza una sintaxis similar a ASP.Net.

Ver Scott Hanselmans Post: http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCext. >

Sí puedes. Simplemente cree una página .aspx estándar, elimine todo el HTML y coloque el contenido que desee en la página. Entonces puede usar & Lt;%% & Gt; etiquetas para colocar contenido dinámico dentro de la página. Y como dijo Jason Z, puede usar el control Repetidor para recorrer en iteración colecciones de elementos para enumerar en la & Quot; page & Quot ;. Además, no podrá utilizar todos los demás controles del servidor, ya que generan HTML, pero aún puede crear su propio control de servidor y / o controles de usuario según sea necesario.

scroll top