2009-05-07 26 views

Trả lời

49

Có một chút bất thường khi nói đến thuộc tính ASP.NET Readonly và thuộc tính readonly của phần tử nhập HTML. Thay vì thiết lập Readonly tài sản của kiểm soát web cố gắng đơn giản thêm thuộc tính HTML để kiểm soát như thế này:

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

này sẽ làm cho việc kiểm soát chỉ đọc trong trình duyệt của khách hàng nhưng vẫn cho phép bạn lấy giá trị của đầu vào khi nó đăng lại máy chủ.

+2

Không thể tin được! Tôi đã mất 2 giờ đêm nay xung quanh rắc rối này ... chết tiệt! – markzzz

+0

Không hoạt động. Lỗi đơn giản: Đã xóa bộ nhớ cache của trình duyệt để tải lại mã mới –

+0

Tuyệt vời! Hoạt động hoàn hảo! – Haris

2

Hệ thống giả định rằng các điều khiển chỉ đọc hoặc bị vô hiệu hóa sẽ không được thay đổi khách hàng để nó không đăng giá trị đã thay đổi trở lại máy chủ. Bạn cần đặt thuộc tính chỉ đọc phía máy khách thay vì phiên bản serverside.

+0

cảm ơn bạn Andrew Hare và Tom Clarkson – input

+1

Cũng giống như ghi chú- thực ra giá trị ĐƯỢC đăng lên máy chủ bởi trình duyệt người dùng, nhưng chúng không được deserialized .. – Botis

1

ASP.NET giả định rằng chỉ đọc và Enabled = "false" tài sản của webcontrol sẽ không thay đổi. Vì vậy, nó không postback giá trị như đã đề cập bởi tom ở trên. Bạn có thể sử dụng cách này. Thêm điều này vào html bạn không phải lo lắng về tài sản chỉ đọc hoặc kiểm soát vô hiệu hóa.

onkeydown="return false;" 
Các vấn đề liên quan