Die alten Bekannten - Response.Write() und Request.Form[]
Im Bezug zu meinen Äusserungen bspw. in diesem Thread möchte ich hier meine Meinung zu den alten Bekannten kundgeben.
Viele - allen voran die Classic ASPler - werden Response.Write() und Request.Form[] gut kennen.
Schliesslich waren diese zwei Methoden täglich Brot und Wasser in der alltäglichen Entwicklung.
Ich habe mich schon ein paar Mal geäussert, das Response.Write() und Request.Form[] nicht mehr benutzt werden sollten.
Wieso?
In Classic ASP war - weitgehenst - strukturierte Programmierung angesagt.
Eine Seite bestand aus Html / etc... und Inline Code und sie wurde prozedural abgearbeitet.
Ein Befehl kommt nach dem anderen, ein Funktionsaufruf nach dem anderen.
Soweit alles ziemlich klar nachvollziehbar und alles unter Kontrolle.
Genau dort war Response.Write() _das_ Mittel zum Zweck.
In ASP.NET haben sich grundlegende Dinge geändert.
So stehen wir vor einer vollkommen objektorientierten Umgebung, die unter anderem auch Events und deren Behandlung offenlegt.
Von der Anforderung bis zum Sendes des Outputs an den Client vergeht eine gewisse Zeitspanne. In dieser Zeitspanne werden
Ereignisse in bestimmten Reihenfolgen gefeuert und abgearbeitet.
Eine ASP.NET Seite besteht aus einer Hierarchie von Controls (Beim beim kleinsten Nenner sind das LiteralControls),
die selber auch einen Lebenszyklus haben bzw. sich in den Lebenszyklus der übergeordneten Controls bis zur Page einfügen.
Im Optimalfall erfolgt die Programmierung unter ASP.NET nur noch über Controls und Seiten die diese Hosten.
ASP.NET erzeugt aus der Control Hierarchie jeweils automatisch den Output für die Seite (natürlich kann da auch eingegriffen werden.).
Wir sind also nicht mehr darauf angewiesen, unseren Output Zeile oder Buchstabe für Buchstabe in den Output Stream zu schreiben.
Es besteht die viel komfortablere Art der Programmierung und des Zugriffes mithilfe von Lebenszyklen, Events, Controls und bspw. dessen Eigenschaften.
Wenn jetzt, in irgend einem Ereignishandler (bspw. Button_Click) per Response.Write() eine Ausgabe getätigt wird, steht diese Zuoberst in der Ausgabe, noch vor dem eigentlichen Seitengrundgerüst.
Der Lebenszyklus einer Seite wird dadurch umgangen, meistens sogar unwissend.
Und genau das macht Response.Write() meiner Ansicht nach, für die meisten Fälle, "böse" bzw. gefährlich und unberechenbar.
(Ich möchte nicht bestreiten, das es natürlich immer Ausnahmen gibt, obwohl mir jetzt adhoc keine einfällt ;-)
Request.Form[] ist dagegen noch spezieller.
Diese Funktion wurde (oder eine ähnliche) in P*P, Classic ASP, etc... benutzt, um Werte von Formularen zu empfangen.
In ASP.NET braucht es diese Funktion in den meisten Fällen (Die berühmten Ausnahmen), nicht mehr.
Es ist viel komfortabler und ASP.NET like, wenn Eigenschaften bspw. einer TextBox -> <TextBox>.Text, benutzt werden um Werte abzufragen.
Die meisten Ausnahmen sind wohl in erweiterten Themen wie bspw. der Control Entwicklung oder sowas zu finden.
Wer Request.Form[] benutzt sollte wissen, damit den Lebeszyklus gewissermassen auszuhebeln, was auch probematisch sein könnte.