Wie funktioniert die Verwendung von HtmlHelper.BeginForm ()?

8

Ok, ich möchte wissen, wie

%Vor%

produzieren

%Vor%

Und wie fügt es das </form> am Ende hinzu? Ich habe im Codeplex gesucht und es nicht im HTML-Helper gefunden. Es gibt eine EndForm-Methode, aber woher weiß das oben genannte?

Der Grund ist, dass ich eine htmlhelper-Erweiterung erstellen möchte, aber nicht weiß, wie man am Ende einer Verwendung schließt.

Jede Hilfe würde geschätzt werden:)

    
Jose 25.06.2010, 20:00
quelle

2 Antworten

16

BeginForm gibt eine IDisposable zurück, die EndForm in Dispose aufruft.

Wenn Sie using(Html.BeginForm()) { ... } schreiben, generiert der Compiler einen finally -Block, der Dispose aufruft, der wiederum EndForm aufruft und das <form> -Tag schließt.

Sie können diesen Effekt kopieren, indem Sie Ihre eigene Klasse schreiben, die IDisposable implementiert.

    
SLaks 25.06.2010, 20:03
quelle
1

Ähnlich wie SLaks sagte, erzeugt es einen finally-Block, der das EndForm aufruft, das die Dispose-Methode auf der IDisposable-Schnittstelle aufruft, die das Objekt .BeginForm () zurückgibt.

BeginForm verwendet Rseponse.Write, um den HTML-Code in die Antwort zu schreiben.

EndForm schreibt das schließende Tag in die Antwort. Daher wird alles, was zwischen dem von BeginForm zurückgegebenen Konstruktor und der Dispose-Methode passiert, in die Antwort zwischen den Form-Tags korrekt geschrieben.

    
Chad Moran 25.06.2010 21:18
quelle

Tags und Links