2008-11-07 15 views
5

Estoy desarrollando un diseñador de formularios HTML que necesita generar HTML estático y mostrar esto al usuario. Sigo escribiendo código feo como este:En C# 3.0, ¿hay alguna clase que me ayude a generar html estático?

public string GetCheckboxHtml() 
{ 
    return ("<input type="checkbox" name="somename" />"); 
} 

no hay un conjunto de clases inflexible de tipos que describen los elementos HTML y permitir que mí escribir código como este en su lugar:

var checkbox = new HtmlCheckbox(attributes); 
return checkbox.Html(); 

yo sólo puede' Pienso en el espacio de nombres correcto para buscar este o el término de búsqueda correcto para usar en Google.

Respuesta

5

Bueno, si descarga (que se puede utilizar en cualquier tipo de proyecto ... incluyendo aplicaciones de consola) ... a continuación, se pueden utilizar los muchos ayudantes HTML del ASP.NET MVC de DLL que tienen.

+0

Me gusta mucho esta solución. Probablemente voy a usar esto. No puedo creer que me haya olvidado de los ayudantes ASP.NET MVC HTML. ¡Gracias! –

2

Una opción es usar XElementfunctional construction. Consulte this blog post para obtener un generador de calendario de ejemplo.

En su caso, el código HTML se podría generar con:

var input = new XElement("input", 
    new XAttribute("type", "checkbox"), 
    new XAttribute("name", "somename")); 

return input.ToString(); 
2

Usted podría utilizar las clases del espacio de nombres System.Web.UI.HtmlControls. Luego puede usar RenderControl para generar el contenido html.

HtmlInputCheckBox box = new HtmlInputCheckBox(); 

StringBuilder sb = new StringBuilder(); 
using(StringWriter sw = new StringWriter(sb)) 
using(HtmlTextWriter htw = new HtmlTextWriter(sw)) 
{ 
    box.RenderControl(htw); 
} 
string html = sb.ToString(); 
+0

Parece una buena solución, sin embargo, estoy preocupado por la naturaleza "pesada" de los HtmlControls incluidos en ASP.NET. Tengo un gran disgusto por ASP.NET WebForms (Prefiero ASP.NET MVC) que podría estar perjudicándome. Realmente aprecio tu aporte. –

+0

En realidad, estoy de acuerdo contigo =) –

0

HtmlTextWriter contiene elementos como "WriteStartTag" y "WriteEndTag", que se pueden usar para crear HTML correctamente formado con bastante facilidad.

Pasas esencialmente el nombre de etiqueta y los atributos a HtmlTextWriter, y genera el HTML correcto, y lo cerrará correctamente con WriteEndTag.

También puede usar los HTMLControls preescritos que envuelven este código en clases muy tipadas.

0

Considere también el uso de System.Xml. Al usarlo, casi garantiza que su HTML cumple con XHTML.

Cuestiones relacionadas