2012-08-23 37 views
5

Chúng tôi biết rằng trong MVC, CheckBoxFor sẽ tạo ra một checkbox với value="true"hidden với số value=false. Cả hai điều khiển đầu vào sẽ có cùng tên.Cách tuần tự hóa hộp kiểm trong biểu mẫu thành dữ liệu Json

Điều này rất hợp lý vì biểu mẫu sẽ có thể BẬT giá trị sai nếu hộp không được chọn. Và trình kết nối mô hình sẽ bỏ qua đầu vào bị ẩn khi hộp kiểm trả về giá trị đúng.

Nhưng bây giờ tôi đã ghi đè sự kiện gửi biểu mẫu để gửi dữ liệu biểu mẫu vào bộ điều khiển WebAPI ở định dạng JSON.

Khi tuần tự hóa dữ liệu biểu mẫu, không có cơ chế phân tích mối quan hệ giữa hộp kiểm và ẩn chính xác. Do đó, khi không được chọn, nó sẽ trả về một số false, điều đó là được. Nhưng khi được chọn, nó trả về một {true, false} thay vì true, bởi vì hàm serializeArray() đi qua mỗi input và tìm hai giá trị có cùng tên.

Câu hỏi đặt ra là: Cách tốt nhất để sửa chữa nó là gì?

+0

bản sao có thể có của [ASP.Net MVC 4 WebAPI không ràng buộc các hộp kiểm chính xác?] (Http://stackoverflow.com/questions/11996285/asp-net-mvc-4s-webapi-does-not-bind- check-boxes-chính xác) –

Trả lời

1

Giải pháp của tôi cho vấn đề này là viết phương thức HtmlHelper của riêng tôi để hiển thị một thẻ nhập < duy nhất = "hộp kiểm"/>. Bất kỳ giải pháp khác dường như quá hacky.

Bạn có thể sử dụng dotPeek hoặc .NET Reflector để xem cách Microsoft Team đã tạo phương thức HtmlHelper.CheckboxFor nếu bạn cần bất kỳ trợ giúp nào hoàn thành tác vụ đó.

Cách tiếp cận 2 thẻ được thực hiện để ngăn chặn các tham số hành động MVC từ việc ném ngoại lệ khi tham số "bool" không có thông số khớp được gửi tới bộ điều khiển (hộp kiểm không được chọn không gửi bất kỳ giá trị nào).

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