| 

.NET C# Java Javascript Exception

3
Hallo,

haben eine ASP-Net Seite mit
- Textbox und einem
- Datagrid: in einer der Spalten ist ein asp:Button

<asp:textbox...>
...
<asp:datagrid...>
...
<asp:templatecolumn ...>
<itemtemplate>
<asp:Button.../>
</itemtemplate>
</asp:templatecolumn>
</asp:datagrid>


Problem:
Gebe ich etwas in die Textbox ein und drücke auf den Button dann kommt die Meldung:
Ungültiges Postback- oder Callbackargument. Die Ereignisvalidierung wird mithilfe von <pages enableEventValidation="true"/> ...


Lade ich die Seite und drücke gleich den Button funktioniert alles.
Auch wenn ich den Button durch einen LinkedButton austausche.

Kann mir jemand erklären warum und wie ich das mit dem Button hinbekomme?
Danke
20.05.2011
MarcusS 207 1 5
2 Antworten
1
Die ASP.NET Eventvalidierung ist ein Feature, welches davor schützen soll, dass bei einem PostBack "manipulierte" Werte zurückgeliefert werden, wodurch evtl. die Integrität deiner Applikation sicherheitstechnisch gefährdet sein kann (z.B. indem ein Hacker einfach in ein Hidden-Element irgendeinen Wert reintut und zurück postet, der da gar nicht drin sein dürfte, vereinfacht ausgedrückt.)

Dieses Feature lässt sich auch ganz einfach abschalten, indem man PageValidation für die entsprechende Seite einfach deaktiviert (enableEventValidation="false"). Dann wird mit Sicherheit dieser Fehler nicht mehr auftauchen, du musst jedoch selbst sicherstellen, dass die PostBack-Werte allesamt korrekt sind und dem entsprechen, was deine Anwendung erwartet. Es handelt sich eigentlich um ein Komfort-Sicherheitsfeature.

Vielleicht hilft dir diese kurze Ausfürung ja dabei, herauszufinden, was bei dir die PageValidierung fehlschlagen lässt, ich tippe eher auf das DataGrid als auf die Textbox.
20.05.2011
Achso 340 1 6
Achso 340 1 6
abschalten will ich die enableEventValidation nicht
MarcusS 20.05.2011
0
das Datagrid rausnehmen und gegen eine 'manuell' zusammengebaute Tabelle ersetzen hilft.
--> also lag es am Datagrid
20.05.2011
MarcusS 207 1 5
Es kann auch an den Eingabewerten der TextBox gelegen haben oder daran, dass du diese Inhalte gleich wieder in dem DataGrid anzeigen willst. Da können Sicherheitsprobleme auftreten (Stichwort Code Injection), die eben die PageValidierung abfangen will. Das Feature funktioniert so. Wnen man einen speziellen Fall hat, wo man das nicht möchte, schaltet man einfach die PageValidierung ab und muss sich dann selbst um das entsprechende Risiko kümmern, so wie du bei diener Lösung jetzt. Läuft auf's gleiche bei raus...
Achso 20.05.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH