2013-03-10 14 views
10

To pytanie zaznacza Literal vs Label natomiast kwestia ta wskazuje, Panel VS. PlaceHolder ale właśnie dziś debatował z kolegą na temat korzystania PlacHolder vs dosłownym dodawania znaczników HTML, który jest generowany w czasie wykonywania. Obie kontrolki nie generują żadnych dodatkowych znaczników, ale szukamy odpowiedniej kontroli do dodawania generowanych znaczników w locie. The answer of this question sugeruje użycie obu do dodania generowanych znaczników, więc zastanawiam się, która kontrola/podejście powinno zostać użyte do dodania wygenerowanych znaczników i nic więcej.Miejsce zarezerwowane vs dosłownym dodawania znaczników HTML generowanego w czasie wykonywania

Odpowiedz

13

Żadne z nich nie są opatrzone znacznikami (co może być bardzo dobrą rzeczą). Jednak Placeholder może zawierać kontrolki podrzędne, podczas gdy Literal nie może.

Dla porównania, Placeholder może zawierać inne elementy sterujące, ale nie ma właściwości Text.

Zastanawiam które kontrolują/podejście powinniśmy używać tylko do dodawania wygenerowany znaczników i nic więcej.

Jeśli przez "wygenerowany" masz na myśli końcowy wynik to ciąg, użyłbym Literal. Jeśli generujesz drzewo kontrolne, dodaj te formanty do Placeholder.

Albo, jeśli chcesz pominąć deklarację kontroli serwerów całkowicie:

<h2>Hello World</h2> 
<p>The following is generated markup.</p> 
<%= base.GetGeneratedMarkup() %> 

wierzę Literal nadal generowane pod maską na to, ale to pozwala mieszać treść generowaną ze znacznikami część twojej strony/kontroli (podobna do Razor).

6
PlaceHolder vs Literal for adding HTML 

Głównym różni się kontrola Dosłowne mają właściwość Text (i Mode), który jest również zapisany na ViewState The PlaceHolder jest całkowicie pusty.

Więc można użyć dosłownym sterowania, aby dodać bezpośrednie jakiś ciąg kod HTML, i można użyć zastępczy dodać kilka innych formantów lecz nie dodając żadnego bezpośredniego kod HTML.