Chú ý: Câu hỏi này đã hơn chín tuổi!
Tùy chọn tốt nhất của bạn là tìm kiếm các câu hỏi mới hơn hoặc tìm kiếm các câu trả lời bên dưới để tìm phiên bản cụ thể của MVC, vì nhiều câu trả lời ở đây đã lỗi thời.
Nếu bạn tìm thấy câu trả lời phù hợp với phiên bản của mình, vui lòng đảm bảo rằng câu trả lời có chứa phiên bản MVC bạn đang sử dụng.
(Câu hỏi ban đầu bắt đầu bên dưới)
Điều này có vẻ hơi kỳ quái với tôi, nhưng theo như tôi có thể nói, đây là cách bạn làm điều đó.
Tôi có một bộ sưu tập các đối tượng và tôi muốn người dùng chọn một hoặc nhiều trong số chúng. Điều này nói với tôi "hình thức với các hộp kiểm." Các đối tượng của tôi không có bất kỳ khái niệm nào về "được chọn" (chúng là POCO thô sơ được hình thành bằng cách khử lưu lượng cuộc gọi wcf). Vì vậy, tôi làm như sau:
public class SampleObject{
public Guid Id {get;set;}
public string Name {get;set;}
}
Theo quan điểm:
<%
using (Html.BeginForm())
{
%>
<%foreach (var o in ViewData.Model) {%>
<%=Html.CheckBox(o.Id)%> <%= o.Name %>
<%}%>
<input type="submit" value="Submit" />
<%}%>
Và, trong bộ điều khiển, đây là cách duy nhất tôi có thể thấy để tìm ra những đối tượng mà người dùng đã kiểm tra:
public ActionResult ThisLooksWeird(FormCollection result)
{
var winnars = from x in result.AllKeys
where result[x] != "false"
select x;
// yadda
}
Nó kỳ dị ở vị trí đầu tiên và thứ hai, đối với những mặt hàng mà người dùng đã kiểm tra, FormCollection liệt kê giá trị của nó là "true false" thay vì chỉ đúng.
Rõ ràng, tôi đang thiếu một cái gì đó. Tôi nghĩ rằng điều này được xây dựng với ý tưởng rằng các đối tượng trong bộ sưu tập được tác động trong biểu mẫu html được cập nhật bằng cách sử dụngUpdateModel()
hoặc thông qua ModelBinder.
Nhưng các đối tượng của tôi không được thiết lập cho điều này; điều đó có nghĩa là đây là cách duy nhất? Có cách nào khác để làm điều đó?