2011-03-10 22 views
8

Mam około 20 pozycji, które chcę wyświetlić użytkownikowi, z polem wyboru obok każdego z nich (właściwość Available w moim ViewModel).Wielokrotne checkboxy ASP.NET MVC

Po przesłaniu formularza chcę mieć możliwość przekazania wartości każdego pola wyboru, które jest sprawdzane z powrotem do mojej metody kontrolera za pośrednictwem właściwości Selections w moim ViewModel.

Jak mam to zrobić przy użyciu klasy Form Helper w MVC? Czy to możliwe?

PS: Nie chcę listy, w której użytkownik może po prostu podświetlić wiele elementów.

Odpowiedz

15

Model:

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

Kontroler:

public class HomeController: Controller 
{ 

    public ActionResult Index() 
    { 
     var model = Enumerable.Range(1, 20).Select(x => new MyViewModel 
     { 
      Id = x 
     }); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(IEnumerable<MyViewModel> model) 
    { 
     ... 
    } 
} 

Zobacz ~/Views/Home/Index.cshtml:

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

szablon Editor ~/Views/Home/EditorTemplates/MyViewModel.cshtml:

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

Najlepiej stworzyć szablon, który można ponownie wykorzystać. Mam w domu kod, który mogę opublikować później wieczorem.

Być może w przypadku podobnych postów sprawdź to w przybliżeniu.

Dynamic list of checkboxes and model binding