2009-11-25 4 views
31

Comment puis-je ajouter une balise span à partir d'un code? Y a-t-il un HtmlControl équivalent? Je le fais actuellement de cette façon. Je construis des lignes à une table dans une implémentation Itemplate.Ajouter par programme un tag d'étendue, pas un contrôle 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); 

Je sais que je pourrais utiliser new Label(), mais je suis en train d'éviter un contrôle serveur ici. Ai-je raison d'utiliser le LiteralControl de cette façon? Quelqu'un at-il de meilleures idées sur la façon de le faire?

Répondre

64

Avec HtmlGenericControl vous pouvez créer une période dynamique comme ça:

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

Suite à l'idée que notre ami a dit Canavar.

Regardez sous l'espace de noms System.Web.UI.HtmlControls et vous verrez tout un tas de contrôles HTML qui ont été mappés aux objets, si vous pouvez les utiliser. HtmlGenericControl s'adapte à tous les contrôles qui ne sont pas définis dans .NET et SPAN en est un exemple.

Bonne programmation.

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

Ou encore:

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

Cela ne va-t-il pas créer une étiquette 'label'? –

0

utilisation LiteralControl. vous pouvez ajouter n'importe quel contenu html que vous voulez. Je ne recommande pas l'étiquette. (pour plus d'informations recherche -label vs littéral-.)

1

Je sais que je suis en retard mais je voulais fournir ma solution pour ce problème.

public class HtmlSpan: HtmlGenericControl 
{ 
    public HtmlSpan(): base("span") { } 
} 
Questions connexes