2009-03-04 11 views
0

Ich benutze C#, um ein Popup-Fenster zu öffnen und dem Benutzer zu erlauben, einen Wert von diesem auszuwählen und den Wert zurück an den Server zu senden. Allerdings, wenn ich die Popup-Fenster zu schließen, erhalte ich folgende Fehlermeldung:ASP.NET Postback Fehler


ungültig Postback oder Callback-Argument. Die Ereignisvalidierung wird unter Verwendung von <pagesenableEventValidation="true"/> in der Konfiguration oder <%@ Page EnableEventValidation="true" %> auf einer Seite aktiviert. Aus Sicherheitsgründen überprüft diese Funktion, dass Argumente für Postback- oder Callback-Ereignisse von dem Serversteuerelement stammen, das sie ursprünglich gerendert hat. Wenn die Daten gültig und erwartet sind, verwenden Sie die Methode ClientScriptManager.RegisterForEventValidation, um die Postback- oder Callback-Daten für die Validierung zu registrieren. "


Weiß jemand, was dieses verursachen könnte?

+1

Braucht eine bessere Beschreibung dessen, was die Seite gerade macht und kann ein bisschen Code sein – AnthonyWJones

Antwort

0

Der häufigste Grund dieser Fehler aufkommt (für mich) ist, wenn Sie Steuerelemente selbst imperativ sind die Erstellung (im Code-behind) statt deklarativ in der ASPX-Datei.Und speziell, wenn Sie während der ersten Seite Rendering eine Reihe von Steuerelementen erstellen, und während der Postback Sie Seite erstellen Logik erstellt eine (möglicherweise etwas) andere Reihe von Steuerelementen.Alle Steuerelemente auf der Seite müssen sein Jedes Mal, wenn die Seite gerendert wird, wird diese Position an der gleichen Position im Baum erstellt und hinzugefügt, unabhängig davon, ob es sich um ein Postback handelt oder nicht, andernfalls kann dieser Fehler auftreten.

Es kann auch andere Ursachen für diesen Fehler geben, aber dies ist das einzige Szenario, in dem ich es gesehen habe.

0

Event-Validierung deaktivieren. Es ist völlig unnötig, solange Sie die Formularwerte selbst überprüfen und sicherstellen, dass Sie keine ungültigen Werte akzeptieren.

1

Ich habe diesen Fehler beim Zurückgeben von Werten in das Formular, die HTML-Markup oder andere eingeschränkte Zeichen enthalten, gesehen. Standardmäßig blockiert .NET dies aus Sicherheitsgründen.

Überprüfen Sie die Werte, die Sie auf Ihrer Seite zurückschicken, wenn Sie das Formular schließen, um zu sehen, ob Sie ein Markup in einem der Eingabewerte senden.

Wenn Sie diesen Datentyp unbedingt senden müssen, deaktivieren Sie die EnableEventValidation-Eigenschaft auf Ihrer ASPX-Seite, und stellen Sie sicher, dass Sie die Überprüfung anwenden, um eine Injektion zu verhindern.

0

This event validation mechanism reduces the risk of unauthorized postback requests and callbacks. With this model, a control registers its events during rendering and then validates the events during the post-back or callback handling. All event-driven controls in ASP.NET use this feature by default.

Sie können EnableEventValidation in der Seite oder der web.config- auszuschalten, sondern dies ein Sicherheitsrisiko darstellen.

Sie könnten versuchen:

wenn es nicht notwendig stellen Sie sicher, Bindungen in getan werden - Page.IsPostBack

0

Wenn Ihr Pop-up (oder etwas anderes) etwas in die Form gespritzt werden, die die Postbacks der Fall ist, dann das! kann die Quelle des Fehlers sein.

ich diesen Fehler gehabt haben, wenn Anrufe Hand verdrahtet jquery ajax mit Auswahllisten zu aktualisieren, die Kaskadierung (viel schneller als aspnet Ajax), die neuen Werte, die in den sekundären Auswahl gesetzt wurden verursacht Ereignisvalidierung (die runat = Server war) zu Scheitern. Sie können entweder alles mit dem Skript-Manager registrieren (was ich ein wenig schmerzhaft finde), oder die Ereignisvalidierung deaktivieren, aber das bedeutet, dass Sie ein wenig härter arbeiten und alles selbst validieren müssen.

Verwandte Themen