Comment passer IEnumerable liste de contrôleur MVC y compris la case à cocher état?
J'ai une application mvc dans lequel je suis à l'aide d'un modèle comme celui-ci:
public class BlockedIPViewModel
{
public string IP { get; set; }
public int ID { get; set; }
public bool Checked { get; set; }
}
Maintenant, j'ai une Vue de lier une liste comme ceci:
@model IEnumerable<OnlineLotto.Web.Models.BlockedIPViewModel>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
}
@foreach (var item in Model) {
<tr>
<td>
@Html.HiddenFor(x => item.IP)
@Html.CheckBoxFor(x => item.Checked)
</td>
<td>
@Html.DisplayFor(modelItem => item.IP)
</td>
</tr>
}
<div>
<input type="submit" value="Unblock IPs" />
</div>
Maintenant, j'ai un contrôleur de recevoir l'action du bouton d'envoi:
public ActionResult BlockedIPList(IEnumerable<BlockedIPViewModel> lstBlockedIPs)
{
}
Mais je suis nulle valeur pour lstBlockedIPs lors de l'entrée à l'action du contrôleur.J'ai besoin d'obtenir la case à cocher état ici. S'il vous plaît aider.
Vous devez vous connecter pour publier un commentaire.
Utiliser une liste à la place et remplacer votre
foreach
boucle avec unfor
boucle:Alternativement, vous pouvez utiliser un éditeur de modèle:
et ensuite, de définir le modèle de
~/Views/Shared/EditorTemplates/BlockedIPViewModel.cshtml
qui sera automatiquement affiché pour chaque élément de la collection:La raison vous avez été d'obtenir la valeur null dans votre contrôleur est parce que vous n'avez pas respecter la convention de nommage pour les champs de saisie que le modèle de classeur par défaut s'attend à réussi à se lier à une liste. Je vous invite à lire le
article suivant
.Une fois que vous l'avez lu, regardez le code HTML généré (et plus particulièrement les noms des champs de saisie) avec mon exemple et le vôtre. Ensuite comparer et vous comprendrez pourquoi le vôtre ne fonctionne pas.
using
bloc. Cela pourrait être un problème.@model IEnumerable<Laier_It.Models.Company>
avec@Html.ActionLink("City", "Index", new { orderBy = ViewBag.sortByCity, companyList = Model })
qui ne poste que de dos "companyList=Laier_It.Modèles.Société"