2009-05-07 21 views

Antwort

49

Es ist ein wenig seltsam, wenn es um die Eigenschaft ASP.NET und das readonly Attribut eines HTML-Eingabeelements geht. Anstatt die Einstellung der Readonly Eigenschaft der Bahn Kontrolle Versuchen Sie einfach den HTML-Attribut an die Steuerung wie folgt aus:

textBox.Attributes.Add("readonly", "readonly"); 

Dadurch wird die Steuerung machen schreibgeschützt in den Browser des Clients dennoch ermöglicht es Ihnen, den Wert abzurufen die Eingabe, wenn es zurück auf den Server sendet.

+2

Unglaublich! Ich habe heute Nacht 2 Stunden um diese Probleme verloren ... verdammt! – markzzz

+0

Funktionierte immer noch nicht. Einfacher Fehler: Den Cache des Browsers löschen müssen, um den neuen Code neu zu laden –

+0

Awesome! Funktioniert perfekt! – Haris

2

Das System geht davon aus, dass schreibgeschützte oder deaktivierte Steuerelemente nicht clientseitig geändert werden, damit der geänderte Wert nicht auf dem Server zurückgeschrieben wird. Sie müssen die readonly-Eigenschaft der Clientseite anstelle der serverseitigen Version festlegen.

+0

Vielen Dank Andrew Hare und Tom Clarkson – input

+1

Nur als eine Notiz - tatsächlich werden die Werte auf dem Server von der Benutzer-Browser geschrieben, aber sie sind nicht deserialisiert .. – Botis

1

ASP.NET geht davon aus, dass die Read-only und enabled = "false" Eigenschaft des webcontrol wird sich nicht ändern. Daher wird der Wert, wie von Tom oben erwähnt, nicht postbackt. Sie können diese Problemumgehung verwenden. Wenn Sie dies dem HTML hinzufügen, müssen Sie sich nicht um die Readonly-Eigenschaft oder das deaktivierte Steuerelement kümmern.

onkeydown="return false;" 
Verwandte Themen