2009-05-07 33 views

Respuesta

49

Hay un poco de extrañeza cuando se trata de la propiedad ASP.NET Readonly y el atributo readonly de un elemento de entrada HTML. En lugar de establecer la propiedad Readonly del control de la tela trate simplemente añadiendo el atributo HTML para el control de esta manera:

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

Esto hará que el control de sólo lectura en el navegador del cliente y aún así le permiten recuperar el valor de la entrada cuando se publica de nuevo en el servidor.

+2

¡Increíble! He perdido 2 horas esta noche por este problema ... ¡maldición! – markzzz

+0

No funcionaba aún. Error simple: tuvo que borrar el caché del navegador para volver a cargar el nuevo código –

+0

¡Impresionante! Funciona perfecto! – Haris

2

El sistema asume que los controles de solo lectura o deshabilitados no se cambiarán al lado del cliente, por lo que no se publicará el valor cambiado nuevamente en el servidor. Debe establecer la propiedad de solo lectura del lado del cliente en lugar de la versión del lado del servidor.

+0

gracias Andrew Hare y Tom Clarkson – input

+1

Al igual que una nota, en realidad los valores SE publican en el servidor por el navegador del usuario, pero no se deserializan .. – Botis

1

ASP.NET asume que el de solo lectura y la propiedad Enabled = "falso" de la de webcontrol no cambiarán. Por lo tanto, no devuelve el valor mencionado por tom anterior. Puede usar esta solución alternativa. Al agregar esto al html, no tiene que preocuparse por la propiedad de solo lectura o el control deshabilitado.

onkeydown="return false;" 
Cuestiones relacionadas