Hi,
es ist alles Gewöhnungssache, gerade wenn du aus einer eher prozeduralen Programmierwelt wie PHP kommst.
Auch ist das Konzept von ASP.Net mit seinen vielen Designern und vorgefertigten Komponenten (die ihren HTML-Sourcecode generieren) primär auf schnell-zusammenklicken-und-es-funktioniert ausgerichtet und von daher vielleicht etwas undurchsichtig am Anfang. Viele der Komponenten die du auf eine "Seite" zusammenklicken kannst bedienen sich per default gerendertem JavaScript für die Funktionalität, zum Bleistift eben diese Validatoren. Du kannst aber genauso auch ASP.Net Seiten nach dem klassischen Schema "Response.Write" plus dein eigener HTML-Sourcecode basteln. Oder, wenn du entsprechend Erfahrung hast, dann schreibst du dir deine eigenen Komponenten, die dann "semantisch sinvolleren" Code erzeugen.
<table> hin, <ul> her... am Ende funktioniert es und nur das (sowie eine ausreichende Kompatibilität mit diversen Brausern) interessiert den Kunden. Das einige "Semantisches-Markup"-Fetischisten sich nicht ganz wohlfühlen, ist eine andere Geschichte, die ich nicht zu diskutieren brauch.
Um dich besser mit ASP.Net anzufreunden und zu verstehen warum es so ist wie es ist, solltest du dir vielleicht mal ein paar Artikel zum Thema "Lebenszyklus einer ASP.Net Seite" durchlesen. Dann wirst du auch sehr schnell erkennen wozu diese ganzen OnDies und OnDas Methoden da sind.
Warum es nur ein <form> pro Seite gibt? Wozu sollte es mehrere geben? Das <form> Tag spielt bei der Programmierung eine ziemlich unwichtige Rolle. Du greifst für gewöhnlich über die Controls-Collection oder über direkte Felder auf die einzelnen "Formular"-Felder bei PostBacks (form.submit()) zurück. Das Verdrahten, ob das Formular wirklich zum Server geschickt wird oder ob die Aktion (Buttonklicks) auch client-seitig via JS abgehandelt wird, geschieht hinter geschlossenen Gardinen, sprich du sollst dich darum gar nicht kümmern. Du erzeugst einfach deine Formularelemente, verdrahtest sie mit Aktionen (Events) und fertig.
Hast du vorher schon mal reine Windows-Anwendungen entwickelt. Wenn ja, solltest du feststellen, dass MS versucht hat, das Programmiermodell von Windows Forms direkt aufs Web = ASP.Net zu übertragen.
Mit Version 2.0 hat MS (eine Wertung dazu möchte ich aber nicht abgeben) dem ASP.Net noch eine ganze Masse an deklarativer Programmiermöglichkeit hinzugefügt, weniger offensichtlicher Code, noch mehr "behind-the-scenes".
Finale Frage: Wenn du 0 Erfahrung mit ASP.Net (anscheinend wohl auch mit .Net allgemein), was machst du dann in diesem Job? Hat man dich mit dem Bewusstsein angestellt, dass du dich eigentlich erst 12 Monate lang richtig einarbeiten müsstest? Nicht dass ich dir die Fähigkeit zum Einlernen absprechen möchte ... ich finde es nur etwas seltsam ... aber ich kenne ja auch die näheren Umstände nicht.
Ciao, Frank