2009-06-01 22 views
8

Me preguntaba: ¿hay alguna manera de crear archivos HTML programáticamente en C# como lo puede hacer con XML? Mine es una aplicación de consola, por lo que tal vez algunas de las opciones no estén disponibles. Básicamente, me gustaría hacer algo más inteligente que simplemente construir una gran cadena.Crear página web HTML programáticamente en C#

escenario posible:

En lugar de escribir:

 string html="<html><head>Blah</head><body>{0}</html>", myotherstring 

me gustaría trabajar como en XML

 XmlTextWriter w = new XmlTextWriter(xml_file_path + xml_file_name, 
             System.Text.Encoding.UTF8); 

    w.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); 

    // construct xml 
    XmlElement root = xmlDoc.CreateElement("element"); 

    ... 

    xmlDoc.Save(w); 
    w.Close(); 

disculpas por la pregunta ingenua.

+0

¿qué significa más inteligente? ¿Podría describir el escenario? – shahkalpesh

+0

Gracias, tuve la misma pregunta. –

Respuesta

6

Puede usar NVelocity. Es un puerto .Net del sistema de plantillas Java Velocity. La API no será similar a XmlWriter. En cambio, escribirá un archivo de texto en un lenguaje de scripting simple, colocará sus objetos en un 'contexto' y luego combinará la plantilla y el contexto para generar el archivo HTML.

  1. NVelocity
  2. Velocity Syntax Guide
+0

Por desgracia, los enlaces están rotos. –

0

Lo que hice hace unos meses, tenía un archivo asp.net (aspx) guardado como plantilla en un archivo de texto, cada vez que el usuario necesitaba una página nueva, simplemente copiaba esa plantilla en la carpeta especificada por el usuario , cambie la extensión .txt a .aspx y agregue programáticamente algunas opciones según las necesidades del usuario. Sin embargo, fue una página simple. Por supuesto, cuanto más complejo sea, más complejo será el código.

7

No se olvide: Puede generar XHTML tan fácilmente como XML normal utilizando el enfoque XmlTextWriter.

+0

+1 para esto. Pero para mi problema actual, descubrí que NVelocity cumplió mis propósitos maravillosamente. –

2

Puede utilizar algunas bibliotecas de código abierto de terceros para HTML (HTML) fuertemente tipado generado generado, como CityLizard Framework o DOM Sharp.

Por ejemplo

html 
    [head 
     [title["Title of the page"]] 
     [meta_(
      content: "text/html;charset=UTF-8", 
      http_equiv: "Content-Type") 
     ] 
     [link_(href: "css/style.css", rel: "stylesheet", type: "text/css")] 
     [script_(type: "text/javascript", src: "/JavaScript/jquery-1.4.2.min.js")] 
    ] 
    [body 
     [div 
      [h1["Test Form to Test"]] 
      [form_(action: "post", id: "Form1") 
       [div 
        [label["Parameter"]] 
        [input_(type: "text", value: "Enter value")] 
        [input_(type: "submit", value: "Submit!")] 
       ] 
      ] 
      [div 
       [p["Textual description of the footer"]] 
       [a_(href: "http://google.com/") 
        [span["You can find us here"]] 
       ] 
       [div["Another nested container"]] 
      ] 
     ] 
    ]; 
2

Soy consciente de que esta pregunta es viejo sin embargo, el reciente lanzamiento de la ASP.Net MVC motor de vistas Razor 3, ahora le da la opción de utilizar el mismo motor de vistas Razor para generar HTML para cualquier propósito.

Consulte Hosting Razor outside of ASP.Net para obtener una guía sobre cómo hacerlo.

+0

He visto el archivo zip y no parece hacer mucho. Ciertamente no genera ningún html. – CarneyCode

Cuestiones relacionadas