2009-11-25 10 views
31

Jak mogę dodać znacznik span z kodu z tyłu? Czy istnieje odpowiednik HtmlControl? Obecnie robię to w ten sposób. Buduję wiersze do tabeli w implementacji Itemplate.Programowo dodać znacznik zakresu, a nie kontrolkę Etykieta?

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); 

Wiem, że mógłbym użyć new Label(), ale staram się unikać kontroli serwera tutaj. Czy w ten sposób używam LiteralControl? Czy ktoś ma lepsze pomysły, jak to zrobić?

Odpowiedz

64

Z HtmlGenericControl można utworzyć rozpiętość dynamicznie tak:

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

Po założeniu, że nasz przyjaciel Canavar powiedział.

Sprawdź w obszarze nazw System.Web.UI.HtmlControls, a zobaczysz całą masę elementów sterujących HTML, które zostały odwzorowane na obiekty, jeśli możesz ich użyć. HtmlGenericControl pasuje do wszelkich formantów, które nie są zdefiniowane w .NET i SPAN jest przykładem.

Happy Coding.

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

Lub alternatywnie:

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

Czy to nie utworzy znacznika 'label'? –

0

użycie literalcontrol. możesz dodać dowolną treść html. Nie polecam etykiety. (więcej informacji szukaj -label vs literal-.)

1

Wiem, że jestem spóźniony, ale chciałem dostarczyć moje rozwiązanie tego problemu.

public class HtmlSpan: HtmlGenericControl 
{ 
    public HtmlSpan(): base("span") { } 
} 
Powiązane problemy