2009-03-09 31 views
8

Tôi có một hộp kiểm đầu vào được kiểm tra và tắt khi một số JS chạy trên tải trang.Hộp kiểm Đã tắt được hiển thị là không được chọn - ASP.NET

<input name="selectUnionDues" id="selectUnionDues" type="checkbox" checked="checked" runat="server" /> 

Khi tôi nhận được giá trị của checkbox bằng cách sử dụng (ở phía máy chủ)

this.selectUnionDues.checked //returns false 

tôi luôn có được một sai

EDIT: Tôi lo ngại về việc sử dụng asp nặng. điều khiển mạng vì kích thước trang trong ứng dụng này cần phải thấp. Có cách nào sử dụng điều khiển HTMl không?

Trả lời

0

Tôi cũng nhận được ít hành vi trực quan hơn. Nếu tôi kiểm tra giá trị trong Page_Init, nó luôn trả về giá trị true. Kiểm tra nó trong Page_Load trả về giá trị đã chọn.

Thử sử dụng điều khiển phía máy chủ thay vì điều khiển HTML bằng runat = server.

<asp:CheckBox ID="selectUnionDues" runat="server" Checked="true" /> 

Ngoài ra, bạn kiểm soát trạng thái "đã tắt" nhưng tôi không thấy bất kỳ điều gì bị tắt trong đánh dấu của bạn. Dù bằng cách nào, tốt hơn để sử dụng một WebControl máy chủ.

+0

Giữa Page_Init và Page_Load có nhiều phương pháp vòng đời trang hơn (bạn có thể ghi đè lên nếu bạn muốn): LoadViewState và LoadPostData. Cả hai điều này có thể thay đổi các giá trị trong các điều khiển. –

0

Nếu bạn không ngại dựa vào JS, bạn có thể có đầu vào bị ẩn giá trị thay đổi khi thuộc tính kiểm tra của hộp kiểm thay đổi và sau đó sử dụng phía máy chủ giá trị đó.

+0

Btw, tôi đoán nó sẽ không phải là một vấn đề dựa trên JS vì JS là những gì đang gây ra các hộp kiểm để trở thành vô hiệu hóa. – Charlino

3

việc kiểm tra này ra http://www.4guysfromrolla.com/articles/012506-1.aspx

Nói tóm lại, (1) có một "SubmitDisabledControls" tài sản của "hình thức" hoặc (2) tinh chỉnh javascript tác giả cung cấp

+0

Điều này không phải lúc nào cũng hoạt động; Tôi đã vô hiệu hóa các bảng đầy đủ các điều khiển bằng phương pháp được đề xuất [ở đây] (http://forums.asp.net/p/1121242/3109517.aspx) và nó ngăn chặn 'SubmitDisabledControls' hoạt động bình thường. Tôi đã vô hiệu hóa tất cả các điều khiển trong bảng một cách riêng biệt để làm cho nó hoạt động. Nhưng cảm ơn về tiền boa. –

1

Nếu bạn vô hiệu hóa hộp kiểm, nó luôn trả về false. ý tưởng tốt nhất là làm cho hộp kiểm chỉ đọc, để nó sẽ trả về giá trị như cũ. tạo readonly="readonly".

0

Mặc dù câu hỏi ban đầu là về kiểm soát HtmlInputCheckBox, tôi nghĩ rằng sẽ rất hữu ích khi đề cập đến vấn đề tương tự cũng tồn tại đối với Kiểm soát hộp kiểm, mà hình ảnh phức tạp hơn, vì có sự khác biệt giữa Enabled = "False" và disabled = "disabled". Tôi đăng kết quả điều tra ở đây: ASP.Net Checkbox.Checked is set to default when use disabled attribute or difference between Enabled property and disabled attribute. Cụ thể nó giải thích lý do tại sao kiểm tra tài sản được đặt lại khi vô hiệu hóa thuộc tính được sử dụng, và tại sao nó không được đặt lại khi tài sản máy chủ được kích hoạt được sử dụng.

Các vấn đề liên quan