2012-06-20 10 views
7

Używam WebForms ASP.NET 4.0. Używam także stron głównych, które dziedziczą po innych stronach wzorcowych. Mam kontrole w panelach. Zasadniczo istnieją wielopoziomowe pojemniki. Powoduje to, że elementy mają OGROMNY ID. Widzę, że ID ma około 300 bajtów!Jak ustawić kontrolery serwera ASP.NET w celu uzyskania najkrótszych identyfikatorów?

Gdy na stronie znajdują się setki elementów, te identyfikatory znacznie zwiększają rozmiar strony. Mam GridView z kontrolkami wiązania.

Jaki jest najlepszy sposób, aby każdy kontroler serwera miał jak najkrótszy identyfikator? Czy istnieje sposób, aby każdy element nie był zależny od jego kontenera (innego niż ClientIDMode="static") ID, nawet jeśli nadal jest unikalny na stronie? Na koniec, czy ASP.NET MVC łagodzi ten problem?

Odpowiedz

1

Myślę, że ClientIDMode=static jest w jeden sposób. Możesz to również ustawić w swoim web.conf. W Asp.Net mvc masz pełną kontrolę nad html (szczególnie w Razor). Nie ma takich myśl, jak formularze internetowe. Masz kontrolę nad przypisywaniem identyfikatorów do tagów html. Infact Asp.Net mvc jest odpowiedzią na wszystkie pozostałe frameworki.

1

Po trzecie, czy ASP.NET MVC łagodzi ten problem?

Tak.

Nie ma ViewState w MVC i nie uruchamiasz żadnych kontroli na serwerze.

Nie używasz żadnych elementów sterujących serwera, które generują mnóstwo trudnych do odczytania dokumentów HTML.

Masz pełną kontrolę nad ClientID w MVC.

<a href="#" id="myID">Click</a> 

Powyższy znaczników zawsze będzie miał identyfikator myID chyba zmienię to sam.

2

MVC całkowicie złagodzić ten problem, ponieważ nie ma po stronie serwera renderowania kodu HTML w ten sam sposób. Cały Twój html jest bezpośrednio w twoich widokach, dzięki czemu masz pełną kontrolę nad każdym przedmiotem. Ryzykujesz również (w przypadku strony zawierającej setki danych wejściowych) kolizyjnych danych wejściowych.

Jednym ze sposobów skrócenia całego generowanego w programie WebForms html jest usunięcie wszystkiego, co nie jest absolutnie konieczne, aby być kontrolerem webusercontrol. Na przykład większość etykiet jest statyczna. Można je normalnie zastąpić standardowym tekstem lub elementami, które nie zawierają atrybutu runat="server". Zapobiegnie to generowaniu identyfikatorów w pierwszej kolejności. Innym sposobem zmniejszenia ilości śmieci, które są generowane, jest usunięcie tylu formantów, ile możesz, z ViewState. Zapobiegnie to ładowaniu ich danych stanu i utrzymywaniu stanu wyświetlania krótszego.

ClientIDMode to dziedziczna właściwość, którą można ustawić na stronie web.config (globalny), web.config (lokalny) lub na poziomie strony. Możesz również użyć go indywidualnie. Twoje pytanie wyraźnie to eliminuje, ale prawdopodobnie byłaby to najlepsza opcja z największą elastycznością bez przepisywania tego, co już masz. Jeśli przepisywanie nie jest problemem, polecam użycie MVC.

Powiązane problemy