52 votes

CheckboxList dans MVC3.0

Comment puis-je créer une checkboxList dans asp.net MVC et ensuite gérer l'événement avec la checkboxList ?

64voto

Darin Dimitrov Points 528142

Vous pouvez avoir un modèle de vue :

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

Un contrôleur :

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
        ...
    }
}

Une vue ( ~/Views/Home/Index.cshtml ) :

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

et le modèle d'éditeur correspondant ( ~/Views/Home/EditorTemplates/MyViewModel.cshtml ) :

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

Lorsque vous soumettez le formulaire, vous obtenez une liste de valeurs et, pour chacune d'entre elles, la mention "coché" ou "non coché".

19voto

mik-T Points 916

Il existe un moyen encore plus simple : utiliser l'extension personnalisée @Html.CheckBoxList() que vous trouverez ici : http://www.codeproject.com/KB/user-controls/MvcCheckBoxList_Extension.aspx

Exemple d'utilisation (vue MVC3 avec moteur de vue 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'
                  )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X