2011-01-27 10 views
7

Obsługuję aplikację, która używa runat="server" wszędzie, aby wyświetlać/ukrywać wiersze tabeli.Czy korzystanie z runat = "server" na <tr> jest złe?

Na przykład w miejscach, w których istnieją zależne DropDownLists, wiersz z dzieckiem ddl będzie ukryty, aż do wartości wybranej przez nas w rodzica ddl.

Czy to jest zła praktyka? Czy jest lepszy sposób to zrobić?

Odpowiedz

9

Używam runat="server" zawsze, gdy tego potrzebuję. Więc myślę, że możesz go również użyć. :-)

+3

Najlepsza odpowiedź! – Homer

1

To, co robię, aby ukryć wiersz zawierający inne elementy sterujące serwera. Innymi opcjami są: asp: panel lub inny kontener, ale dodadzą więcej HTML bez żadnego zysku.

+2

asp: PlaceHolder jest jednym ze sposobów uniknięcia dodatkowego renderowania HTML –

+0

Miałem na myśli znaczniki HTML i serwera na samej stronie ASPX. – David

0

Wcale nie. Program ASP.NET obsługuje tworzenie dowolnego znacznika html po stronie serwera. Alternatywą jest zawijanie tagu w Panel i ukrywanie lub pokazywanie tego. Jeśli nie szukasz dodatkowej funkcjonalności lub chcesz samodzielnie sterować danymi wyjściowymi, tworzenie tagu html na serwerze nie stanowi problemu.

1

Nie sądzę, że to musi być zła praktyka. Zrobiłem to samo wiele razy. Myślę, że to głównie osobiste preferencje.

2

Nie jest źle używać runat = "server" ze standardowymi kontrolkami HTML. Często można znaleźć zastosowanie PlaceHolders do pokazywania i ukrywania treści na stronach lub w ASP.NET MVC może pojawić się użycie wbudowanych bloków kodu, takich jak <% ...%> w widokach. Na swój własny i nie biorąc pod uwagę innych aspektów projektowania, nie jest ani dobre, ani złe.

6

Myślę, że to absolutnie okropna praktyka. Przede wszystkim nie musisz robić podróży na serwer, aby ukryć i pokazać kontrolki, chyba że potrzebujesz nowych danych.

Po drugie, każdy przyzwoity framework javascript pozwoli ci ukryć kontrolki programu na podstawie identyfikatora kontrolki, nazwy klasy lub dowolnego selektora CSS. Ponadto użycie javascript post/get do ogólnej obsługi da ci dane, które potrzebujesz bez odświeżenia strony.

Proponuję użyć JQuery lub innej alternatywy.

+2

to już robi wycieczkę na serwer, aby wypełnić dziecko DropDownList z powodu \ * gasp \ * UpdatePanels. – Homer

5

To zależy od tego, jak bardzo zależy Ci na wydajności. Wszystko, co jest oznaczone przez runat = "serwer", przechodzi więcej przetwarzania niż tylko znaczniki po stronie klienta.

Osobiście już z nich korzystałem. Zwłaszcza w sytuacji, gdy komórka tabeli lub wiersz tabeli opiera się na danych z serwera. Możesz użyć Javascript lub JQuery z ukrytym polem, ale nadal musisz trafić serwer na ukryte pole, więc nie kupuje zbyt wiele.

Powiązane problemy