Obtenir les Éléments Sélectionnés de CheckboxList MVC.NET Rasoir

J'ai le texte suivant cshtml forme

@using (Html.BeginForm(Html.BeginForm("Create", "UserRole", Model, FormMethod.Post)))
{
   @Html.AntiForgeryToken()
   @Html.ValidationSummary(true)

   <fieldset>
       <legend>Role</legend>

       <div class="editor-label">
           @Html.Label(Model.User.UserName)
       </div>
       <div class="editor-field">
           @Html.CheckBoxList(Model.CheckboxList)
       </div>

       <p>
           <input type="submit" value="Create" />
       </p>
   </fieldset>
}

Et je souhaite obtenir le Modèle.CheckboxList une sélection d'Articles dans mon action.

J'ai la suite à Créer des actions dans mon Contrôleur

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(UserRoleViewModel userRoleViewModel)
    {
        if (ModelState.IsValid)
        {
            //_context.Role.Add(role);
            //_context.SaveChanges();
            //return RedirectToAction("Index");
        }

        return View(viewModel);
    }

Cependant le viewModel.CheckboxList est de 0.

Comment puis-je transmettre les valeurs sélectionnées de la checkboxlist, et aussi le Modèle.L'utilisateur du Contrôleur de l'Action?

Mon ViewModel ressemble à ceci :-

    public User User { get; set; }
    public IEnumerable<Role> RoleList { get; set; }

    public List<UserRoleViewModel> UserList { get; set; }

    public IEnumerable<SelectListItem> CheckboxList { get; set; }

    public UserRoleViewModel()
    {
    }

    public UserRoleViewModel(User user, IEnumerable<Role> roleList )
    {
        User = user;
        RoleList = roleList;
    }

Merci pour votre aide et votre temps!

Mise à JOUR ----------- Après la lecture de ce post entrez description du lien ici, j'ai essayé d'adapter mon code pour suivre l'exemple, mais je suis toujours à la recherche de problèmes avec cette mise à jour du code.

Maintenant, j'ai les suivantes :-

cshtml :-

@model IEnumerable<MvcMembership.ViewModels.RoleCheckboxListViewModel>

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

Vues/Rôle/EditorTemplates/RoleCheckboxListViewModel.cshtml

@model MvcMembership.ViewModels.RoleCheckboxListViewModel
@Html.HiddenFor(x => x.RoleId)
@Html.HiddenFor(x => x.RoleName)
<div>
   @Html.CheckBoxFor(x => x.Checked)
   @Html.LabelFor(x => x.Checked, Model.RoleName)
</div>

Viewmodel :-

public class RoleCheckboxListViewModel
{
    public string RoleId { get; set; }
    public string RoleName { get; set; }
    public bool Checked { get; set; }
}

et le contrôleur de l'action est comme suit :-

        public ActionResult Create(int? uid)
    {
        var checkBoxList = new[]
        {
            new RoleCheckboxListViewModel() { 
                    RoleId = "1", Checked = true, RoleName = "item 1"  },
            new RoleCheckboxListViewModel() { 
                    RoleId = "2", Checked = true, RoleName = "item 2" },
            new RoleCheckboxListViewModel() { 
                    RoleId = "3", Checked = true, RoleName = "item 3" },
        };

        return View(checkBoxList);
    }

Le problème que j'ai maintenant c'est que sur le Créer des.cshtml. Je ne vois pas l'checkboxlist, mais seulement 123 affiché ainsi que le bouton OK.

Toute aide serait très appréciée car je suis dans une impasse pour le moment.

InformationsquelleAutor Johann | 2013-08-12