Frage

Hallo, das mag eine seltsame Frage erscheinen, aber hier ist meine Situation:

Ich habe ein Formular, in dem der Benutzer Zeilen klicken und hinzufügen kann, die bestimmte Eingabefelder enthalten. Dies ist auf der Client -Seite mit JQuery ausschließlich durchgeführt. Ich kann auf die Eingabewerte auf dem Postback auf ASP.NET -Seite mit request.form und dem Namen der Felder zugreifen, was in Ordnung ist. Das Problem ist, wenn die Seite zurückgibt, verschwinden die Felder offensichtlich. Ich habe also keine Möglichkeit, Fehlervalidierung oder andere Dinge durchzuführen. Was sind meine möglichen Lösungen hier? Sollte ich die entsprechenden Felder dynamisch auf der Serverseite generieren, wenn Postback auftritt, und die bereits gelesenen Werte von den von Client -Seite generierten Feldern so einsetzen, dass sie für Benutzer transparent sind? Ist das eine Runde über die Art und Weise, Dinge zu tun? Gibt es einen besseren Weg?

Ich dachte darüber nach, eine AJAX -Methode auf der Serverseite hinzuzufügen, die die Validierungsinformationen zurückgeben würde, und ich könnte sie verwenden, um Fehler zu signalisieren oder was nicht, ohne jemals zurückzubiegen, sondern die Schaltfläche, die den Beitrag zurück verursacht, ist das "nächste". Button, und ich muss zur nächsten Seite gehen, wenn keine Fehler vorliegen.

Ich suche nach weiteren Erkenntnissen, die jemand haben könnte, und nach Vor- und Nachteilen der Ansätze.

Vielen Dank

War es hilfreich?

Lösung

Wenn Sie dynamisch Eingabefelder hinzufügen möchten, müssen Sie einen serverseitigen Hash der neu hinzugefügten Felder verwalten und sie in page_init neu einbauen, damit sie zwischen Postbacks bestehen bleiben.

Ich denke, Ihre Ajax -Idee ist gut:

  1. Rufen Sie eine serverseitige Methode über jQuery auf (dies kann eine statische Methode auf Ihrer .aspx-Seite sein). Die serverseitige Methode fügt einem Sitzungsstar einen Stringwert hinzu List<String>.
  2. Lassen Sie die Methode den String -Wert zurückgeben, der die ID des Elements ist, um der Seite hinzuzufügen.
  3. Fügen Sie die Elemente Ihrer Seite mit JQuery hinzu.
  4. Verwenden Sie die Sitzungsvariable, um Ihre dynamischen Felder nach dem Postback erneut zu steigern.

Mit dieser Methode werden Sie die Geschwindigkeit des Hinzufügens der Felder auf der Clientseite erhalten und verhindern, dass Ihre dynamischen Felder auf dem Postback verschwinden.

Andere Tipps

1) Schnell und schmutzig können Sie ein UpdatePanel verwenden, aber das würde die Größe des Verkehrs erhöhen. Auf diese Weise können Sie Validierungskontrollen einfügen, indem Sie das gesamte Markup für die Tabelle zurückversetzen.

2) Sie können eine Art CustomValidator- oder benutzerdefinierte Validierungsmethode verwenden und einfach die Werte für Anforderungsform verwenden. Solange Sie eine Möglichkeit haben, die Felder zu identifizieren, sollten Sie in der Lage sein, dies auszuarbeiten, aber Sie müssen die Szene neu erstellen, wenn der Postback fehlschlägt, da Sie diese Teile verlieren.

3) Sie können den gesamten "Postback" über einen WebMethod -Anruf ausführen und alles manuell behandeln. Dies ist wahrscheinlich der sauberste Weg, um dies zu tun, da Sie die traditionellen Webforms -Dinge sowieso mit einem Client -Modell mischen und abgleichen.

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