ASP.NET: JavaScript Ändern Sie den Wert eines Hidden vor dem Absenden
-
08-07-2019 - |
Frage
Ich habe bei ähnlichen Fragen auf Stack Overflow gesucht, aber nicht in der Lage, die Lösung zu diesem Problem zu finden. Ich habe eine einfache (nicht wirklich, aber wir vorgeben) ASP.NET-Seite mit einem Update-Panel in seinem Inneren.
In diesem Update-Panel gibt es eine HiddenField
Steuerung mit einem Wert, den JavaScript über meinen eigenen benutzerdefinierten gesetzt / aktualisiert werden. Der Wert ist aktualisiert, wie ich in dem DOM mit Firebug sehen kann.
Neben diesem HiddenField
gibt es eine LinkButton
, die die JavaScript ruft den Wert des HiddenField
mit OnClientClick
zu ändern (dies funktioniert). Die LinkButton
hat auch einen OnClick
Handler, der ausgeführt wird, nachdem der Wert geändert wurde.
Doch in dem OnClick
Handler, erhalte ich den Anfangswert der HiddenField
und nicht der Wert, der durch JavaScript! Gesetzt wurde
Warum ist das? Ist dies ein Fall von " PEBKAC "?
EDIT: Versuchte das Gleiche mit einem TextBox
ohne Erfolg. Auch versucht, den Wert manuell mit Firebug Modifizieren vor dem Absenden des Formulars, ohne Erfolg.
EDIT 2: Ich habe erkannt, dass Page_Load
vor dem OnClick
Handler aufgerufen wird, die Dinge wurde durcheinander. Ich werde die Frage nicht löschen, wie andere Leute das gleiche Problem haben und können diese Frage wertvoll finden.
Lösung
Du musst es tun EndRequestHandler Ereignis verwendet wird, zur Verfügung gestellt von dem AJAX-Update-Panel.
Bitte schauen Sie sich diese ->
http://www.codeproject.com/KB/ajax /AfterAjaxUpdate.aspx?display=Print
Andere Tipps
Das ist mir scheint, als ob der Ansichtszustand Sie einen schlechten Witz macht (wie oft). Was ich denke, ist, dass, wenn die Seite Beiträge zurück, wird das verborgene Feld mit dem Wert initialisiert im Viewstate enthalten ist.
eine Sache Versuchen: Schalten Sie den Wert nicht direkt durch yourHiddenField.Value
zugreifen, sondern in der OnInit Ihrer Seite mit Request.Forms[yourHiddenField.UniqueId]
bekommen und es zu einem Hidden werfen und den Wert extrahieren. Ich bin mir nicht sicher, ob dies die richtige Syntax. Die „geschrieben“ Werte sollten irgendwo im Request-Objekt sein, wenn ich mich recht erinnere. Prüfen Sie, ob Sie den Wert dort. Wenn Sie es dort zu erhalten, ist das Problem der Ansichtszustand, die wieder nach dem OnInit Ereignisse der Seite abgebildet wird. Dann müssen wir eine Lösung für das finden ...
Wie generieren Sie den neuen Eingang auf dem Client? Wäre es möglich, diese stattdessen auf dem Server auszuführen?
Auf diese Weise können die gerade die OnClick
beide anstelle des OnClick
und OnClientClick
verwenden können.