2008-09-11 26 views
5

Podoba mi się HtmlControls, ponieważ nie ma magii HTML ... źródło asp wygląda podobnie do tego, co widzi klient.Kiedy używać HtmlControls vs WebControls

Nie mogę argumentować za pomocą narzędzia GridView, Repeater, CheckBoxLists, itp., Więc używam ich, gdy potrzebuję tej funkcji.

Również wygląda dziwnie mieć kod, który mieszanki i mecze:

<asp:Button id='btnOK' runat='server' Text='OK' /> 
<input id='btnCancel' runat='server' type='button' value='Cancel' /> 

(Powyższa sprawa w przypadku chciałeś powiązać zdarzenie słuchacza po stronie serwera do OK ale Anuluj prostu uruchamia skrypt, który ukrywa bieżący div)

Czy jest tam jakiś ostateczny przewodnik stylu? Czy należy unikać HtmlControls?

Odpowiedz

5

Przydałoby się myśleć o elementach sterujących HTML jako opcji, gdy chcesz uzyskać większą kontrolę nad oznaczaniem, które kończy się emitowaniem twojej strony. Więcej kontroli w tym sensie, że chcesz, aby KAŻDA przeglądarka widziała dokładnie ten sam znacznik.

Jeśli tworzysz System.Web.UI.HtmlControls jak:

<input id='btnCancel' runat='server' type='button' value='Cancel' /> 

Wtedy wiesz, jaki rodzaj kodu ma być emitowany. Mimo że większość czasu:

<asp:Button id='btnCancel' runat='server' Text='Cancel' /> 

będzie w końcu tym samym znacznikiem. Ten sam znacznik nie zawsze jest emitowany dla wszystkich WebControls. Wiele WebControls ma wbudowane renderowanie adaptacyjne, które renderuje inny HTML w oparciu o agent użytkownika przeglądarki. Przykładowo DataGrid będzie wyglądać zupełnie inaczej w przeglądarce mobilnej niż w przeglądarce na komputerze.

Używanie WebControls w przeciwieństwie do HtmlControls pozwala także na korzystanie z ASP.NET v2.0 ControlAdapters, które, jak sądzę, działa tylko z WebControls, pozwoli ci na programową kontrolę sterowaną nad znacznikami, które są emitowane.

Może to wydawać się bardziej wartościowe, jeśli uznasz, że niektóre przeglądarki mobilne lub telewizory internetowe będą wymagać WML lub zupełnie innych zestawów znaczników.

1

cóż ... nie użyłbym formantu html, jeśli nie musisz nic na nim robić na serwerze. wykonałbym

<input id='btnCancel' type='button' value='Cancel' /> 

płetw.

3

Z mojego doświadczenia wynika, że ​​różnica jest niewielka. Jak powiedział Darren, jeśli nie potrzebujesz funkcjonalności po stronie serwera, formanty HTML mają prawdopodobnie mniejszy wpływ.

I nie zapominaj, że możesz łączyć funkcjonalność po stronie serwera z niemal wszystkimi kontrolkami HTML, dodając dyrektywę runat = "server" i identyfikator do niej.

0

Dodając runat = „server” można uzyskać dostępu do żadnych kontroli HTML po stronie serwera .. i wierzę kontrole HTML są mniejszą wagę w porównaniu do kontroli serwera ASP.NET ..

Powiązane problemy