2009-05-07 11 views

risposta

49

C'è un po 'di stranezza quando si tratta della proprietà ASP.NET Readonly e dell'attributo readonly di un elemento di input HTML. Invece di impostare la proprietà Readonly del controllo web provare semplicemente aggiungendo l'attributo HTML per il controllo in questo modo:

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

Questo renderà il controllo di sola lettura nel browser del cliente ma ancora ti permettono di recuperare il valore di l'input quando invia di nuovo al server.

+2

Incredibile! Ho perso 2 ore stasera per questo problema ... dannazione! – markzzz

+0

Non funzionava ancora. Semplice errore: è stato necessario svuotare la cache del browser per ricaricare il nuovo codice –

+0

Impressionante! Funziona perfettamente! – Haris

2

Il sistema presuppone che i controlli di sola lettura o disabilitati non verranno modificati clientide in modo che non invii nuovamente il valore modificato al server. È necessario impostare la proprietà readonly lato client anziché la versione serveride.

+0

grazie Andrew Hare e Tom Clarkson – input

+1

Proprio come una nota, in realtà i valori vengono inviati al server dal browser dell'utente, ma non vengono deserializzati .. – Botis

1

ASP.NET presuppone che la sola lettura e Enabled = "false" proprietà del WebControl non cambieranno. Quindi non postback il valore come menzionato da tom sopra. È possibile utilizzare questa soluzione alternativa. Aggiungendo questo al codice HTML non ci si deve preoccupare della proprietà Readonly o del controllo disabilitato.

onkeydown="return false;" 
Problemi correlati