2009-11-25 21 views
31

¿Cómo puedo agregar una etiqueta span desde un código? ¿Hay un HtmlControl equivalente? Actualmente lo estoy haciendo de esta manera. Estoy construyendo filas en una tabla en una implementación Itemplate.¿Agregar programáticamente una etiqueta span, no un control Label?

var headerCell = new TableHeaderCell { Width = Unit.Percentage(16)}; 
var span = new LiteralControl("<span class='nonExpense'>From<br/>Date</span>"); 
headerCell.Controls.Add(span); 
headerRow.Cells.Add(headerCell); 

Sé que podría utilizar new Label(), pero estoy tratando de evitar un control de servidor aquí. ¿Estoy en lo correcto al usar el LiteralControl de esta manera? ¿Alguien tiene alguna mejor idea de cómo hacer esto?

Respuesta

64

Con HtmlGenericControl puede crear dinámicamente un lapso de esa manera:

var span = new HtmlGenericControl("span"); 
span.InnerHtml = "From<br/>Date"; 
span.Attributes["class"] = "nonExpense"; 
headerCell.Controls.Add(span); 
2
new HtmlGenericControl("span") 
1

Siguiendo la idea de que nuestro amigo Canavar dijo.

Busque en el espacio de nombres System.Web.UI.HtmlControls y verá un montón de controles HTML que se han asignado a los objetos, si puede usarlos. HtmlGenericControl se ajusta a cualquier control que no esté definido en .NET y SPAN es un ejemplo de eso.

Happy Coding.

4
Label span = new Label(); 
span.Text = "From<br/>Date"; 
span.CssClass = "nonExpense"; 
headerCell.Controls.Add(span); 

O, alternativamente:

Label span = new Label {Text = "From<br/>Date", CssClass = "nonExpense"}; 
headerCell.Controls.Add(span); 
+1

¿No va a crear una etiqueta 'label'? –

0

uso LiteralControl. puede agregar cualquier contenido html que desee. No recomiendo la etiqueta. (para obtener más información busque -label vs literal-.)

1

Sé que llego tarde pero quería brindarle mi solución para este problema.

public class HtmlSpan: HtmlGenericControl 
{ 
    public HtmlSpan(): base("span") { } 
} 
Cuestiones relacionadas