J'essaie de comprendre comment représenter correctement les valeurs, le processus sélectionné et, plus tard, le formulaire d'édition affichant les éléments cochés comme cochés et les autres valeurs possibles comme non cochées.
J'ai déjà essayé quelque chose mais je ne suis pas sûr d'être sur la bonne voie. En utilisant ces solutions, le formulaire d'édition n'affiche que les éléments cochés, et pas les autres non cochés.
Si vous avez une meilleure solution, n'hésitez pas à la partager, car j'essaie de comprendre comment cela fonctionne.
Le voici : Supposons qu'il existe un utilisateur qui peut appartenir à un ou plusieurs rôles. Je représenterais donc ces éléments par deux modèles de vue, UserViewModel et RoleViewModel.
**UserViewModel.cs**
public int id {get; set;}
public string username {get; set;}
public UserViewModel()
{
Roles = new List<RoleViewModel>();
}
public void SendToDomain(User user, ISession nhibSession)
{
if(user.Roles != null)
{
user.Roles.Clear();//Clear previous selected items
foreach(Role role in Roles)
{
if(role.IsInRole)
user.Role.Add(nhibSession.Load<Role>(user.RoleId));
}
}
}
**RoleViewModel**
public bool IsInRole {get; set;}
[HiddenInput(displayValue = false)]
public int RoleId {get; set;}
[HiddenInput(displayValue = true)]
public string RoleName {get; set;}
Et dans EditorTemplates, j'ai RoleViewModel.cs
@model Models.RoleViewModel
@Html.CheckBoxFor(m=>m.IsInRole)
@Html.HiddenFor(m=>m.RoleId)
@Html.LabelFor(m=>m.IsInRole, Model.RoleName)
Enfin, à l'intérieur de la vue Create, je les affiche comme suit @model Models.UserViewModel
<div> User roles </div> <div> @Html.EditorFor(m => m.Roles) </div>