2011-02-02 24 views
52

Làm thế nào tôi có thể tạo ra một CheckBoxList trong asp.net MVC và sau đó để xử lý sự kiện này với CheckBoxListCheckBoxList trong MVC3.0

+0

Hãy thử điều này [Checkbox Và Mẫu trình chỉnh sửa nút radio trong Mvc 4] (http://www.jquery2dotnet.com/2013/06/checkbox-and-radio-button-editor.html) – Sender

Trả lời

64

Bạn có thể có một mô hình điểm:

public class MyViewModel 
{ 
    public int Id { get; set; } 
    public bool IsChecked { get; set; } 
} 

Một bộ điều khiển:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new[] 
     { 
      new MyViewModel { Id = 1, IsChecked = false }, 
      new MyViewModel { Id = 2, IsChecked = true }, 
      new MyViewModel { Id = 3, IsChecked = false }, 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(IEnumerable<MyViewModel> model) 
    { 
     // TODO: Handle the user selection here 
     ... 
    } 
} 

A View (~/Views/Home/Index.cshtml):

@model IEnumerable<AppName.Models.MyViewModel> 
@{ 
    ViewBag.Title = "Home Page"; 
} 
@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="OK" /> 
} 

và mẫu tương ứng Editor (~/Views/Home/EditorTemplates/MyViewModel.cshtml):

@model AppName.Models.MyViewModel 
@Html.HiddenFor(x => x.Id)   
@Html.CheckBoxFor(x => x.IsChecked) 

Bây giờ khi bạn gửi biểu mẫu bạn sẽ nhận được một danh sách các giá trị và cho mỗi giá trị cho dù nó được kiểm tra hay không.

+0

Tuyệt vời điều này chắc chắn là cách để đi! – superlogical

+0

Xin chào Darin Dimitrov - Tôi có một câu hỏi. Tôi đã cố gắng này và có thể làm cho nó hoạt động. Tôi có một trình trợ giúp HTML làm việc cho việc này. Nhưng tôi cũng muốn thử cách tiếp cận này. Trong trường hợp của tôi, nhãn cho các hộp kiểm là động và vì vậy tôi đang tìm cách để liên kết chúng với mẫu trình soạn thảo. Bạn có thể đề nghị một cách để làm điều đó? Cảm ơn bạn! – k25

+1

Tôi cũng đã đăng câu hỏi về vấn đề này, ngay bây giờ. Vui lòng tham khảo trong trường hợp bạn có vài phút - http://stackoverflow.com/questions/6695022/asp-net-mvc-3-checkboxlist-need-some-suggestions và +1 cho giải pháp thanh lịch như vậy! – k25

19

Có cách thậm chí đơn giản - sử dụng tùy chỉnh @ Html.CheckBoxList() mở rộng từ đây: http://www.codeproject.com/KB/user-controls/MvcCheckBoxList_Extension.aspx

dụ sử dụng (xem MVC3 với công cụ xem Razor):

@Html.CheckBoxList("NAME",     // NAME of checkbox list 
        x => x.DataList,   // data source (list of 'DataList' in this case) 
        x => x.Id,    // field from data source to be used for checkbox VALUE 
        x => x.Name,    // field from data source to be used for checkbox TEXT 
        x => x.DataListChecked // selected data (list of selected 'DataList' in thiscase), 
              // must be of same data type as source data or set to 'NULL' 
       ) 
+0

Tôi đã thử sử dụng điều đó với VERSION 3.0. Liên kết trên bởi @ mik-t sẽ chỉ hoạt động với .NET 4.0 hoặc 4.5 và MVC4 – Sandeep

+0

Giải pháp ở trên đã được đăng cho phiên bản cũ hơn, nó đã hoạt động với MVC3, thử phiên bản cũ hơn này từ NuGet, nó sẽ hoạt động: http : //www.nuget.org/packages/MvcCheckBoxList/1.4.3 –

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