2012-07-12 11 views
19

Czy zawsze należy używać polecenia runat = "server" na standardowym elemencie HTML zamiast prawdziwego formantu ASP.NET? Mam pełną kontrolę nad ustawianiem html/text normalnego elementu, więc dlaczego nie miałbym go używać zamiast "clunky" kontrolki ASP.NET WebForms?Kiedy używać polecenia runat = "server" na normalnym kodzie HTML

Jeśli jeden jest lepszy od drugiego, niektóre interesujące chciałbym wiedzieć:

  • różnice wydajności
  • różnice czynnościowe
  • Inne różnice nie tak oczywiste?

Przykładem różnica:

<asp:Literal ID="mySpecialHtml" runat="server" /> 

<div id="mySpecialHtml" runat="server" /> 

Odpowiedz

16

Obie są kontrolkami serwera ASP.NET. Te odpowiadające elementom HTML znajdują się w przestrzeni nazw System.Web.UI.HtmlControls, a formanty internetowe znajdują się w przestrzeni nazw System.Web.UI.WebControls.

Elementy sterujące HTML są bardziej lekkie i odpowiadają dokładnie elementowi HTML, podczas gdy elementy sterujące w Internecie mają więcej funkcji i mogą być renderowane jako różne elementy HTML w zależności od możliwości przeglądarki i ustawień kontrolki.

Kontrola HTML jest renderowana jako pojedynczy element HTML, a formant sieciowy jest renderowany jako zero lub więcej elementów HTML. Sterowanie Literal nie jest na przykład renderowane jako element, a jedynie wyświetla tekst. Istnieją inne formanty, które same nie renderują żadnych elementów, takich jak formanty Repeater i PlaceHolder.Z drugiej strony na przykład sterowanie CheckBoxList jest renderowane jako kilka elementów HTML, table jako kontener i input elementów dla każdego pola wyboru w środku.

Przykładem sterowania, która jest realizowana za pomocą różnych elementów jest sterowanie TextBox, które zostaną wykonane albo jako input lub element textarea w zależności od jej własności TextMode.

Sterowanie internetowe ma więcej funkcji, ale wykorzystuje też więcej zasobów. Mają więcej właściwości i obsługują takie rzeczy jak tematy i powiązanie danych. Wiele elementów sterujących w Internecie umieszcza dane w pliku ViewState, który jest wysyłany jako część strony. Jeśli nie jesteś ostrożny, ViewState może stać się dość duży i wpływać na czas ładowania strony.

10

Jedynym powodem użyłem html formantów serwera jest to, kiedy potrzebna elastyczność pisać własne html ale nadal potrzebne, aby uzyskać dostęp do jego właściwości w kodzie tyłu.

<div id="mySpecialHtml" runat="server" /> 

W kodzie za:

mySpecialHtml.InnerHtml = "something else"; 
1

wolę używać formantów html kiedy jest więcej pracy po stronie klienta i używać formantów asp.net, gdy istnieje więcej pracy po stronie serwera (kod za).

4

Analizator składni programu ASP.NET interpretuje standardowe elementy html w/runat = znacznik "serwer" jako elementy sterujące serwera html. Przykład:

<a runat="server"></a> 

jest interpretowany jako

<asp:HtmlAnchor runat="server"></asp:HtmlAnchor> 

więc mieć świadomość, że jeśli używasz runat = "server" niż używasz odpowiednią kontrolę HTML Server.

Ponadto program ASP.NET zawiera zestaw elementów sterujących serwera WWW, np. Sterowanie HyperLink, które zapewniają większą funkcjonalność, więcej właściwości, zdarzeń itp., Ale w niektórych przypadkach mogą być wolniejsze.

+0

+1 Niektórzy uważają, że dodanie runat = "server" do formantu HTML niczego nie zmienia, podczas gdy w rzeczywistości konwertują tę kontrolę do kontrolki serwera. –

1

Wierzę, że program ASP.NET używa innego zestawu elementów sterujących serwera WWW, który zwykle ma o wiele więcej funkcji, ale naprawdę zależy od preferencji użytkownika. Jeśli twoja praca jest w większości serwerowa, pozostanę przy sterowaniu ASP.NET.

Powiązane problemy