Comment utiliser @Html.CheckBoxFor() tout en traitant avec une Liste<ViewModel>

C'est mon point de Vue. Comment utiliser CheckboxFor():

@using eMCViewModels;
@model eMCViewModels.RolesViewModel
@{
    ViewBag.Title = "CreateNew";
}
<h2>
    CreateNew<
/h2>

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>RolesViewModel</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <div>
            @foreach (RoleAccessViewModel mnu in Model.RoleAccess)
            {
                 //How to use checkboxfor here?
            }
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Model.RoleAccess est un List<RoleAccessViewModel> et je veux créer case à cocher à l'aide de @Html.CheckBoxFor().

C'est mon RoleAccessViewModel

public class RoleAccessViewModel
{
    public int RoleID { get; set; }
    public string RoleName { get; set; }
    public int MenuID { get; set; }
    public string MenuDisplayName { get; set; }
    public string MenuDiscription { get; set; }
    public string IsEnabled { get; set; } //changed to bool
}

Supposons que j'ai 5 éléments dans la liste, puis j'ai besoin de 5 case ID=menuID et Texte = menuDisplayName. Comment puis-je y parvenir?

MODIFIER

Ma tentative

@Html.CheckBoxFor(x=>x.RoleAccess.SingleOrDefault(r=>r.MenuID==mnu.MenuID).IsEnabled )
@Html.LabelFor(x=>x.RoleAccess.SingleOrDefault(r=>r.MenuID==mnu.MenuID ).MenuDisplayName ) 

Mais après avoir changé le type de IsEnabled de string à bool. La case à cocher œuvres. Mais Étiquette s'imprime seulement MenuDisplayName au lieu de valeurs . Peut-on les aide ?

Pourquoi est-IsEnabled une chaîne de caractères?
Qu'avez-vous essayé lorsque vous essayez d'appeler CheckBoxFor? Je ne vois pas une tentative de communiquer avec elle.
c'est le point de l'ensemble de la question. Apparemment, l'OP ne sait pas que le CheckBoxFor helper fonctionne uniquement sur les champs booléens, c'est pourquoi vous ne voyez pas toutes les tentatives, parce que son modèle de vue n'est tout simplement pas adapté pour travailler avec des cases à cocher.
Je ne suis pas sûr pourquoi vous essayez d'utiliser l'int pour une valeur Booléenne. Si c'est un Vrai/Faux, alors vous aurez envie de régler en conséquence. Comment évaluez-vous un vrai/faux à partir d'une valeur numérique? La deuxième question, quand vous publier une collection pour le contrôleur - compte tenu de votre code. Voir haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx pour vous la prochaine question....
J'ai essayé beaucoup et compiler le problème du temps. C'est parce que le type de IsEnabled est une chaîne. Il fonctionne lorsque j'ai changé de bool. Consultez la mise à jour de question

OriginalL'auteur kbvishnu | 2012-07-25