TextBox de solo lectura en ASP .NET
Un problema que he encontrado hace poco en las páginas ASP .NET es que cuando defino la propiedad ReadOnly de un TexBox en true o la propiedad Enabled en false para evitar que un usuario modifique el contenido de la cajita de texto, dicho valor se pierde cuando hago un postback en la página, ya sea por hacer click en un botón o seleccionar un elemento de un DropDownList o cualquier otro caso.
Una forma que encontré de evitar este problema era con esta instrucción para la definición de la caja de texto:
<asp:TextBox ID=”txtCaja” runat=”server” OnKeyDown=”return false;” OnContextMenu=”return false;” />
Al utilizar el evento OnKeyDown del modelo de objetos del navegador, le indicamos que haga nada cuando se pulsa una tecla, eso evita que alguien escriba en la caja de texto.
El evento OnContextMenu se desencadena cuando pulsamos el botón derecho del mouse y con esa instrucción le indicamos que no muestre el menú contextual, lo que evita que el usuario haga Clic derecho y pegar.
Ahora si, con estos dos atributos podremos evitar que cambien nuestros datos y los mantendremos en cada postback, y lo mejor es que lo probé en Internet Explorer y en Firefox y en ambos casos funciona.
Saludos.

Hola! Pues yo tengo el mismo problema que tu, pero utilizando tu solición no me funciona.
Mi problema es qeu si lo realizo por codigo si me coge el dato, pero esta vez necesito hacerlo por javascript y no consigo hacerlo funcionar.
Un Saludo. Si alguien me puede ayudar o se ha encontrado con elmismo problema que yo.
exelente lo felicito
Gracias, estaba empezando a desesperarme, pero probé tu solución y me funciona perfectamente.