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 &nbsp; 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.

Go PHP5