Pregunta

Estoy desarrollando una aplicación Web ASP.NET en el trabajo, y sigo corriendo en el mismo tema:

A veces quiero escribir HTML a la página de código subyacente. Por ejemplo, tengo una página, Editor.aspx, con salida que varía en función del valor de una variable GET, "vista". En otras palabras, "view = manzanas Editor.aspx?" Salidas HTML diferente de "Editor.aspx? View = naranjas".

Actualmente esta salida HTML con StringBuilder. Por ejemplo, si quería crear una lista, puede ser que utilice la siguiente sintaxis:

myStringBuilder.AppendLine("<ul id=\"editor-menu\">");
myStringBuilder.AppendLine("<li>List Item 1</li>");
myStringBuilder.AppendLine("</ul>");

El problema es que yo prefiero usar el control Lista de ASP.NET para este propósito, debido a que varias líneas de sintaxis StringBuilder dificultar la lectura de mi código. Sin embargo, los controles ASP.NET tienden a la salida HTML enrevesado, con únicos de identificación, los estilos en línea, y el bloque ocasional de JavaScript en línea.

Mi pregunta es, ¿hay un control ASP.NET que simplemente representa una etiqueta HTML genérico? En otras palabras, ¿existe un control como el siguiente ejemplo:

HTMLTagControl list = new HTMLTagControl("ul");
list.ID = "editor-menu";
HTMLTagControl listItem = new HTMLTagControl("li");
listItem.Text = "List Item 1";
list.AppendChild(listItem);

Sé que hay envolturas y tal, pero en lugar de la domesticación de la complejidad ASP.NET, prefiero comenzar con la simplicidad del primer momento.

¿Fue útil?

Solución

  

¿Hay un control ASP.NET que   simplemente representa una etiqueta HTML genérico?

Sí, se llama la HtmlGenericControl :)

En lo que exactamente lo que quiere no, pero que le permite desplazarse con facilidad:

HtmlGenericControl list = new HtmlGenericControl("ul");
list.ID = "editor-menu";
HtmlGenericControl listItem = new HtmlGenericControl("li");
listItem.InnerText = "List Item 1";
list.Controls.Add(listItem);

Si realmente necesita para bajar al metal desnudo, entonces debería usar el HtmlTextWriter clase en lugar de un StringBuilder, ya que se adapta más a medida para el bombeo de HTML puro.

Otros consejos

Si quiere simplemente asignar los resultados de su StringBuilder a un control en blanco, se puede utilizar un control <asp:Literal /> para esto.

LiteralControl tiene constractor que puede pasar su html ... Creo que es mejor.

new LiteralControl (sb.ToString ());

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top