2009-03-25 5 views
1

Warum ASP.NET LinkButton Kontrollen mit OnClientClick Attribute und deaktiviert durch Enabled="false" Einstellung noch onclick Event-Handler in HTML machen, während Button Kontrollen nicht?ASP.NET Button-vs Linkbutton aktiviert = "false" Verhalten

Es scheint kontraintuitiv. Da Anker in Browsern nicht wirklich deaktiviert werden können, ist es sinnvoller, ein onclick-Ereignis (und das href-Attribut) nicht anzuhängen, wenn es serverseitig deaktiviert wurde.

Antwort

2

Nun, ich würde zustimmen, dass es nicht viel Zweck server, aber ohne die Art, wie die Linkbutton mit einer der vielen Methoden in asp.net rendern Rendern ändert wirklich nichts dagegen tun kann. Es sei denn, Sie möchten Klicks im clientseitigen Code konditional behandeln und Elementattribute überprüfen. Dies ist genau die Art und Weise, wie es derzeit implementiert ist. Wenn Sie also die Funktionalität einer Schaltfläche benötigen, die deaktiviert werden kann, ist es am besten, sich vollständig von Linkbuttons oder Ankern fernzuhalten.

0

Das hat wirklich wenig mit asp.net zu tun.

Eine Hyperlink-Schaltfläche löst das Onclick-Ereignis auch dann aus, wenn sie deaktiviert ist. Unterste Zeile: in HTML gebacken. (Ein Eingabe-Tag wird bei Deaktivierung nicht ausgelöst.)

<a href="javascript:alert('Hello!');" disabled="disabled">Click Me!</a> 
+0

Mein Punkt genau. Warum also die Attribute href/onclick rendern? Wenn Sie deaktivierte Button-Steuerelemente sehen, die von asp.net gerendert werden, werden sie deaktiviert und ANclick wird nicht gerendert (ich denke aus Sicherheitsgründen). –

+0

Eingabetaste löst kein onclick-Ereignis aus, wenn sie deaktiviert ist. –

+0

Vielleicht sagen wir das Gleiche, aber ein Eingabe-Tag/Button löst das onclick-Ereignis nicht aus, wenn es deaktiviert ist (Event wenn das Markup enthalten ist.) Vielleicht optimiert asp.net nur ein bisschen, da das Onclick-Markup nicht verwendet wird/erforderlich. – andleer