Perché una casella di testo di sola lettura non restituisce alcun dato in ASP.NET?
Domanda
Ho impostato una casella di testo in sola lettura. Quando l'utente fa clic su di esso, viene visualizzato un calendario e l'utente seleziona la data da inserire nella casella di testo di sola lettura.
Ma quando provo a inserire i dati nel database, mostra un valore nullo. Cosa c'è che non va?
Soluzione
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, prova semplicemente ad aggiungere l'attributo HTML al controllo in questo modo:
textBox.Attributes.Add("readonly", "readonly");
Ciò renderà il controllo di sola lettura nel browser del client, ma consentirà comunque di recuperare il valore dell'input quando si ripone sul server.
Altri suggerimenti
Il sistema presuppone che i controlli di sola lettura o disabilitati non vengano modificati sul lato client, quindi non registra il valore modificato sul server. È necessario impostare la proprietà di sola lettura sul lato client anziché la versione sul lato server.
ASP.NET presuppone che Readonly ed Enabled = " false " la proprietà del webcontrol non cambierà. Pertanto non restituisce il valore come indicato da Tom sopra. È possibile utilizzare questa soluzione alternativa. Aggiungendo questo al codice HTML non devi preoccuparti della proprietà Readonly o del controllo disabilitato.
onkeydown="return false;"
Oppure puoi sostituire la casella di testo ASP con il tipo di input text con runat = " Server " e quindi aggiungendo la proprietà readonly come readonly. Controlla il link