Créer MVC3 CheckBoxFor de la Liste<T> et l'obtention de la liste (Avec les valeurs mises à jour) sur le Post
J'ai une Liste dans mon ViewModel je lis à la Vue
List<BoolSetting>
BoolSetting:
public class BoolSetting
{
public BoolSetting(string displayName, bool value)
{
DisplayName = displayName;
Value = value;
}
public string DisplayName { get; set; }
public bool Value { get; set; }
}
Je veux imprimer une case à cocher pour tous les articles de ma liste, de sorte que la liste est dans le ViewModel la vue utilise
@foreach(var boolSettingList in Model.BoolSettingList)
{
<div>
@Html.CheckBox(boolSettingList.DisplayName, boolSettingList.Value)
@boolSettingList.DisplayName
</div>
}
Le problème est que lorsque je poste ce alors que mon Modèle n'ont pas enregistré les paramètres mis à jour (Les valeurs bool) dans la Liste dans mon ViewModel et, par conséquent, l'objet est vide.
Je pouvais faire
foreach (var VARIABLE in userSettingConfigViewModel.BoolSettingList)
{
VARIABLE.Value = (bool)Request.Form[VARIABLE.DisplayName];
}
Mais ce dernier aura beaucoup de listes et certains d'entre eux ont les mêmes noms! Donc, ça va provoquer des conflits
Donc, il y a un moyen de foreach imprimer toutes mes booléens et ensuite faire MVC figure afin de mettre les données dans la Liste d'objet après? Je ne peux pas obtenir CheckBoxFor de travailler comme il veut une expression et je ne peux pas trouver un moyen de itterate dans ma liste de cette façon
Je peux peut-être le fixer à l'aide de Modèles, en faisant un modèle pour BoolSetting et peut-être la Liste ?
OriginalL'auteur Mech0z | 2011-12-02
Vous devez vous connecter pour publier un commentaire.
Commencer par la fixation de votre modèle d'affichage et la suppression de la coutume, le constructeur ou le classeur de modèles par défaut de ne pas pouvoir l'instancier et vous aurez à rédiger des classeurs de modèles personnalisés et des trucs:
Puis écrire l'action d'un contrôleur qui remplira votre modèle de vue:
une vue (
~/Views/Home/Index.cshtml
) dans lequel il vous suffit d'utiliser l'éditeur de modèles et de ne pas écrire lesforeach
boucles ou faiblement typé html helpers commeHtml.CheckBox
. En utilisant l'éditeur de modèles, vous assurez la saisie de tous les champs ont des noms corrects de sorte que le modèle de classeur par défaut est en mesure de récupérer leurs valeurs dans le modèle de vue au cours de la publication:et enfin le correspondant de l'éditeur de modèle pour le modèle de vue qui sera affiché pour chaque élément de la collection (
~/Views/Home/EditorTemplates/BoolSetting.cshtml
):OriginalL'auteur Darin Dimitrov