Miałem nieprzyjemność pracować nad projektem napisanym w ASP.Net 2003. Backend w C# jest całkiem niezły, ale to, co jest produkowane przez ASP WebControls jest po prostu tragiczne.
HTML (z)ryty w skale
Kod HTML generowany przez ASP.Net jest, delikatnie mówiąc, słaby. Najgorsze jest to, że lwia część tego kodu jest generowana automatycznie przez „kontrolki” ASP. Programista aplikacji teoretycznie nie ma na ten kod wpływu, bo w ogóle o nim ma nie wiedzieć.
Teoretycznie, bo znalazło się paru zdolnych, którzy poprawili ten syf i nawet zmusili ASP do generowania XHTML. Nie jest to jednak proste zadanie i np. za hack „XHTML Forms” producent każe sobie płacić, w zależności od licencji, od kilkuset do dwóch tysięcy dolarów. Łatwo-Googlowalne metody „zrób to sam” dużym kosztem (np. kilka RegExp na całym dokumencie) usuwają tylko poszczególne problemy. A problemów jest wiele…
Datagrid
Trzeba nieźle się namęczyć (i naśmiecić w kodzie), żeby tabeli danych nadać choćby najprostrze style. ASP nie używa tagu <th> do nagłówków, nie wrzuci do <tfoot> linii z ilościa wyników/stron, etc. Wszystko jest jednym mdłym <td>, którego nie ma się jak „chwycić”.
Etykiety
Jaki tag w HTML tworzy etykietę? <label>
Jaki tag tworzy <asp:Label>? <span>
Przeglądarki lepsze i gorsze, inaczej
ASP.Net dla przeglądarek innych niż zgadnij jaka generuje zdegradowany i udziwniony kod (np. żadnego DHTML, powstawianie tu i ówdzie).
Postback
Cała strona z punktu widzenia ASP to jeden wielki formularz. Efektem ubocznym jest, że każdy link ASP musi wysłać ten formularz. Okupione jest to najgorszym <a href="javascript:…">, powodującym, że nie ma mowy o otworzeniu go w nowym oknie, dodaniu zakładek i innych takich rzeczy, będących nie do pomyślenia dla projektantów ASP.
Jakby tego było mało, to zwykłe wciśnięcie entera może pominąć javascriptowy postback i może spowodować utratę danych.
Atrybutowa fantazja
Dodane na byle czym border="0", tabindex="99" i powtórzone wszędobylskie ID są na porządku dziennym. Validator krzyczy, a ASP.Net nie słyszy.
Więcej
Szukając na sieci rozwiązań ww. problemów znalazłem tylko kolejne narzekania, że można spotkać document.all i jeszcze więcej perełek. Podsumowując: ASP.Net 2003 nadaje się do pisania stron dla przeglądarek z 1995-1998 roku. W czasach internetowego oświecenia to jest bubel.
