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.
- double possible de CheckboxList dans MVC3 Vue et d'obtenir les éléments cochés transmis au contrôleur
- déjà regardé la solution, mais n'a pas aider, toujours avoir de la difficulté à conserver le viewModel
- Je ne peux pas voir
public bool Checked { get; set; }
pour votre modèle. Passer par le post, j'ai suggéré à fond - ok et comment puis-je régler l'Vérifiée drapeau?
- suivi ce post, toujours avoir les valeurs null si
- J'ai mis à jour la question à la suite de la poste vous l'avez suggéré, mais j'ai toujours des problèmes
- Itérer le modèle comme celle-ci
Vous devez vous connecter pour publier un commentaire.
J'ai accompli cela avec les pièces suivantes:
1) Un modèle de vue de l'enfant de l'élément qui ajoute de la valeur bool propriété qui représentent si oui ou non la case est cochée dans la Vue plus tard... c'est à dire:
2) Un modèle d'affichage pour le parent de l'élément qui ajoute une propriété collection pour ce nouvel enfant à la vue de l'élément de modèle, c'est à dire:
3) Une couche de service méthode pour obtenir une liste de tous les éléments enfants, tout en fixant le bool propriété pour chaque ("Attribué" dans mon exemple). Pour être utilisé par votre contrôleur.
4) Une méthode pour la mise à jour de l'élément parent de la collection basée sur votre checkboxlist sélections. Pour être utilisé par votre contrôleur.
5) les Modifications à apporter à votre Créer/Modifier la vue. c'est à dire:
Vous devez également ajouter ce donc qu'à l'origine, les valeurs assignées sont inclus dans les données post. Vous aurez à ajouter un HiddenFor pour chaque propriété que vous avez défini comme Requis par la validation.
6) Et enfin, une nouvelle EditorTemplate pour votre enfant de voir des éléments de modèle. c'est à dire:
J'espère que mon propre application vous donne une meilleure idée de comment résoudre ce problème.
Magasin de votre choix de la valeur dans la variable comme suit, et de le transmettre à un champ caché, alors vous pouvez y accéder facilement