Frage

Im Textfeld (nicht eine feste Anzahl von Textbox) dynamisch zu einem Formular auf ASP.NET-Seite hinzugefügt, wie las ich Daten aus diesen Textfeldern zurück?

War es hilfreich?

Lösung

Sie wollen Unter der Annahme, die Bedienelemente auf der Postbacks zugreifen würden Sie wahrscheinlich die dynamische Steuerelemente neu erstellen, genau so, wie sie auf der Anfangslast erzeugt wurden, dann ist die FindControls Methode Seite verwenden, um die Kontrollen zu finden. Es wäre wahrscheinlich helfen, die Textfelder mit IDs wie Textbox1, TextBox2, usw. zu erstellen.

Andere Tipps

Schauen Sie sich Request.Params und extrahieren Sie sie von dort aus. Sie werden, natürlich haben sie ids zu geben, sie in der Lage zu unterscheiden.

Von allen ASP.NET-Anwendungen mit denen ich gearbeitet habe, mag .NET den folgenden Algorithmus verwenden, wenn die ID-Server-Steuerelemente zu erzeugen:

ctl00$cphBody$[ControlID]

Versuchen Sie, diesen Algorithmus zu verwenden, wenn Sie Ihre Daten aus den dynamisch generierten Textfelder zugreifen.

Wenn Sie sie hinzufügen, sollten Sie ihnen Namen / ids werden geben, und Sie können diejenigen, sie zu verweisen verwenden.

Wenn nicht, gehen Sie Ihren DOM in Javascript, sie in der Form zu finden, die Sie gemacht - sie sind in der gleichen Reihenfolge sein werden eingefügt Sie sie.

Schließlich sind sie alle als Post / get Eingaben zu Ihrer Seite, so dass Sie sollten in der Lage, sie zu betrachten alle so lange, wie Sie sie verschiedene Namen zugewiesen.

-Adam

Wenn Textfelder dynamisch Erstellen von (vermutlich mit Hilfe von JavaScript, aber gleiche gilt für ASP.NET-Steuerelemente), um ihnen Namen in einem bestimmten Muster geben. Das werden Sie in der Lage zu erkennen später.

Auf Server-Seite, auf jeden Fall Handler auftritt, nachdem Page_Init können Sie durchlaufen Request.Form Sammlung.

nicht versucht sein, Sie Request.Param zu verwenden, da sie verwendet werden kann, Cross-Site-Request-Forgery auf Ihrer Bewerbung (ein Angreifer Benutzer lockt in eine GET-Anforderung ausgibt, die die Anwendung das gleiche interpretieren würde, wie es eine interpretieren würde POST ein, die in der Regel keine gute Sache ist).

Wenn Sie die dynamischen ASP.NET-Steuerelemente hinzufügen (in Page_Render zum Beispiel) auch Kontrollen rekonstruieren kann und die Eigenschaften verwendet werden.

Sie können die Findcontrol verwenden und die Textbox ID übergeben eine Instanz der Textbox, wenn Post zurück zu bekommen. Die Text-Eigenschaft enthält die Daten gegeben, dass wir auf Seite Laststufe sind oder später im Zyklus. Wenn dynamische Steuerelemente Hinzufügen überschreiben die Create Verfahren und die dynamischen Steuerelemente hinzufügen in diesem Stadium des Zyklus Hierarchie zu steuern.

Beachten Sie, dass in ASP.Net, jedes Postbacks eine neue Instanz der Klasse ist. Wenn Sie diese Kontrollen während einer früheren Postbacks oder auf dem ersten Blick erstellt dann wurden sie Müll mit dem Rest der vorherigen Instanz gesammelt. So die Kontrollen in dieser neuen Instanz zu verwenden, müssen Sie sie erneut erstellen. Wenn Sie die Statusinformationen für diese Kontrollen (einschließlich Wert vom Benutzer eingegeben) geladen müssen, müssen Sie auch erstellen vor der Ansichtszustand geladen wird, was bedeutet, tun Sie es während des Init-Ereignisses, anstatt die load-Ereignis.

dynamische Steuerelemente zu erstellen, würde ich in der Regel ein ASP.NET-Platzhalter-Steuerelement verwenden und die dynamische Steuerelemente zu diesem Container hinzufügen.

Ich würde jede dynamische Steuerung eine ID geben.

Sie können dann mit anschließend Findcontrol auf dem Platzhalter die dynamische Steuerung zugreifen zu können.

Ich sage „dynamische Kontrollen“ bedeuten Steuerelemente, die Sie zur Laufzeit hinzufügen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top