Warum entfernt .NET ein <form>-Tag von der Seite, wenn bereits ein Formular mit runat-Serverattribut vorhanden ist?

Es entfernt nicht alles innerhalb des 2. Formular-Tags, sondern versteckt nur die und Tags von der Seite

Ideen und Problemumgehung?

Antwort auf "Warum entfernt .NET ein <form>-Tag von der Seite, wenn bereits ein Formular mit runat-Serverattribut vorhanden ist? " 4 von antworten

Der Grund, ASP.NET alles in einer einzigen Form einschließt, ist, dass bei einem Postback das gesamte Formular zurück auf den Server gesendet wird und Sie Zugriff auf jedes Element haben, das sich auf der Seite befindet.

Das heißt, Sie sind in der Lage, die Eigenschaften von Elementen ( myTextbox.Text = 'Hello';) from the Code-Behind. ) aus dem Code-Behind zu ändern.

Sie können keine verschachtelten Formular-Tags haben. Wechseln Sie zu asp.net mvc, wenn Sie mehr Kontrolle über das Markup haben möchten, oder erwägen Sie, keine asp.net Serversteuerelemente zu verwenden, auf diese Weise können Sie mehrere Formulartags einschließen, ohne sicherzustellen, dass sich die Steuerelemente innerhalb eines Formular-Tags mit dem Runat-Serverattribut befinden, sie erhalten dann jedoch nicht den granularen Zugriff im dahinter stehenden Code und müssen die Anforderungs-.formular-Colelction verwenden, um die Postback-Werte abzurufen.

Verschachtelung von Formularen ist in HTML nicht zulässig. Sie können also kein weiteres Formular innerhalb des Serverformulars hinzufügen.

Aber es ist völlig legal in ASP.NET, Get-Formulare außerhalb des Serverformulars hinzuzufügen.

Ich habe das verschachtelte Formular nach draußen verschoben, um dieses Problem zu lösen.