Kann ein Client programmgesteuert auf ein Schaltflächenklickereignis zugreifen, wenn die Schaltfläche nicht gerendert wird? [Duplikat]

8

Dies ist in ASP.NET-Webformularen, ich habe eine Schaltfläche zum Speichern auf einem Bildschirm. Wenn ich die Seite initial lade, wird unter bestimmten Bedingungen die Schaltfläche Speichern nicht gerendert.

%Vor%

In meinem Button angeklickt Event habe ich das

%Vor%

Die einzige Sicherheit, die verhindert, dass der Benutzer gespeichert wird, besteht darin, ob die Schaltfläche zum Speichern wiedergegeben wird.

In MVC wäre es einfach, auf die Aktionsmethode zum Speichern der Schaltfläche zuzugreifen, indem Sie einen HTTP-POST mit meiner eigenen modifizierten Anforderung an den Server senden.

In ASP.NET-Webformularen bin ich etwas verwirrt, da es darauf beruht, dass der verschlüsselte ViewState zurückgesendet wird. Muss ich diese Sicherheit auch zum button1_click-Ereignis hinzufügen? Wenn ja, können Sie mir dann sagen, wie ein Client ein Postback auf den Server auslösen kann, das das Button-Klick-Ereignis erreichen würde, ohne dass der Button sichtbar ist?

    
Diskdrive 04.08.2015, 12:49
quelle

2 Antworten

4

Das ist einer der häufigsten Fehler in ViewState - es dient NICHT Ihren Klickereignissen und vielen anderen Dingen.

Jeder Klick auf die Schaltfläche (oder Checkbox, wenn Autopostback aktiviert ist) löst ein Formular aus, das an den Server gesendet wird. Alle Informationen darüber, was angeklickt wurde, sind in den Postback-Daten des Formulars als einfacher Text enthalten. Dann analysiert der Server diese Daten und, da Ihre Schaltfläche IPostBackDataHandler implementiert hat, löst er entsprechende Ereignisse aus, wie zum Beispiel "Button-ID wurde geklickt". Sie können also den Anfragetext ändern:

%Vor%

Oben können Sie den Inhalt der Eingabe mit id = ctl00__pdContent_txtEmail sehen und auf die Schaltfläche "login" mit id = ctl00__pdContent_btnRtnUser klicken.

Weitere Erklärungen zu Serverereignissen in WebForms hier .

Und lesen Sie bitte mehr über ViewState hier oder noch bessere Erklärung hier .

    
LaoR 04.08.2015 13:34
quelle
1

Ссылка

Entsprechend dieser Antwort auf eine andere Frage sieht es so aus, als ob es unmöglich ist, das Button-Klick-Ereignis zu erreichen, wenn die Schaltfläche nicht gerendert wird, solange Sie die relevanten Sicherheitseinstellungen festgelegt haben.

  

Ja, das Festlegen der Eigenschaft Visible einer Schaltfläche auf false ist ausreichend, um dies zu verhindern   Die Click- und Command-Ereignisse werden nicht ausgelöst, solange Sie dies nicht tun   Deaktivieren Sie die standardmäßigen ASP.NET-Sicherheitsfunktionen.

    
Diskdrive 05.08.2015 12:43
quelle

Tags und Links