MVC CheckBoxList modèle de liaison avec les booléens
Je veux lier une Liste de Case à cocher et d'obtenir les valeurs sélectionnées. J'ai besoin d'afficher deux Case de tables et de récupérer à la fois les Identifiants.
Ci-dessous est mon ViewModel
public partial class ViewModel_Role_Security
{
public List<Roles> oRoleMaster { get; set; }
public List<Securities> oSecurityMaster { get; set; }
}
Tous les ces trois ces deux valeurs
1. ID
2. Nom (Dans ce cas pour le Rôle - ID, RoleName | pour les Titres - ID, SecurityName ...)
//ajout d'un 3ème propriété de type boolean isselected, afin de travailler avec des cases à cocher seulement puis vous obtiendrez posté retour
Ces ne pas ont tout boolean valeurs
À l'aide de ce Dernier, je suis de liaison de ces éléments à l'aide de la méthode ci-dessous...
public ActionResult AddingRoleSecurity()
{
ListRoles = new List<Roles>();
ListSecurities = new List<Securities>(); //And then populate them with data ...
var model = new ViewModel_Role_Security();
model.oRoleMaster = ListRoles;
model.oSecurityMaster = ListSecurities;
return View(model);
}
Mon correspondant cshtml fichier est..
@model KnackWFM.BusinessEntities.ViewModel_Role_Security
@using (Html.BeginForm())
{
<div class="contentsecurity">
<div class="User_role">
<p class="Security_role">User Role</p>
@for (int i = 0; i < Model.oRoleMaster.Count; i++)
{
<input id="@Model.oRoleMaster[i].RoleID" name="@Model.oRoleMaster[i].RoleName" type="checkbox" value="@(Model.oRoleMaster[i].RoleName)" />
<label for="@Model.oRoleMaster[i].RoleID">@Model.oRoleMaster[i].RoleName</label>
<br />
@Html.CheckBoxFor(Model.oRoleMaster[i].RoleID.selec)
}
</div>
<div class="User_Page">
<p class="Security_role">Role Security</p>
@for (int i = 0; i < Model.oSecurityMaster.Count; i++)
{
<input id="@Model.oSecurityMaster[i].SecurityID" name="@Model.oSecurityMaster[i].SecurityName" type="checkbox" value="@(Model.oSecurityMaster[i].SecurityName)" />
<label for="@Model.oSecurityMaster[i].SecurityID">@Model.oSecurityMaster[i].SecurityName</label>
<br />
}
</div>
<div class="bottombuttonsecurity">
<button type="submit" id="btnSave" name="Command" value="Save" style="background-color: #3d3c4c;border-radius: 8px;color: white;padding: 5px;border: 1px solid #3d3c4c;">Save</button>
</div>
</div>
}
Pour laquelle j'obtiens le résultat suivant,
Je voudrais pour obtenir les valeurs contrôlées comme un modèle.
J'ai un HttpPost méthode comme ça, mais il renvoie des valeurs null.
[HttpPost]
public ActionResult AddingRoleSecurity(ViewModel_Role_Security model)
{
return View();
}
S'il vous plaît laissez-moi savoir comment puis-je obtenir le activée valeurs dans le modèle?
Merci beaucoup!
Dans AddingRoleSecurity méthode d'action, vous avez mentionné le modèle que ViewModel_Role_Security et à votre avis, vous avez mentionné le nom du modèle, comme ViewModel_User_Role_Security_Page ceux de remorquage ne correspondaient pas qui de l'autre c'est le problème je pense
Salut, je veux obtenir l'sélectionnés Id de la sélection. Comment pourrais-je définir la valeur de modèle lorsque le modèle ne marche pas toute boolean
merci, c'était une faute de frappe.. c'est pas le problème
Utiliser des modèles de vue pour
Roles
et Securities
inclut une propriété bool IsSelected
de sorte que vous pouvez l'utiliser correctement un typage fort des aides dans les collections
OriginalL'auteur indiaxxo | 2014-12-18
Vous devez vous connecter pour publier un commentaire.
Juste pour étoffer mon commentaire ci-dessus...
Pour une checkboxList - le viewmodel devrait inclure à la fois un identifiant de propriété, et boolean propriété sélectionnée. Si ce n'est pas déjà à l'époque, soit d'étendre ou de créer une nouvelle classe ViewModel à atteindre ce but - carte votre modèle existant à ce dernier.
c'est à dire - Votre Modèle de Classe(s) de
Votre Point De Vue:
Notez que les cases à cocher
Html.HiddenFor()
a été inclus pour chacun des UserRole/UserSecurity des propriétés de l'ID, qui permet MVC pour lier les propriétés ID après la publication.et votre contrôleur doit maintenant utiliser le nouveau modèle ci-dessus aussi!
Il ne faut pas toujours s'attendre à être en mesure de lier l'entité cadre des classes directement de Vues MVC et les Modèles contiennent des propriétés qui ont des informations échangées avec la Vue. Son tout à fait acceptable de créer des Modèles pour une utilisation dans une vue unique, et vous avez votre contrôleur de créer une nouvelle instance, puis mapper les propriétés requises à partir du modèle d'entity framework
OriginalL'auteur James S
Je ne veux pas apparaître comme je suis à prendre le crédit pour James excellent travail, mais une nouvelle réponse est tout ce que je peux faire. Pour des raisons que je ne comprends pas, mon montage que les corrigés de les erreurs de compilation dans le code ont été rejetées comme non correction de problèmes critiques. Donc, je poste comme un travail complet de réponse.
Les Modèles:
Et la vue:
OriginalL'auteur Red
Je voudrais utiliser https://www.nuget.org/packages/BeginCollectionItem/
Cela vous aidera à obtenir le droit de séquence de liaison à l'aide de GUID
Meilleur Regard
Burim
OriginalL'auteur Burim Hajrizaj
vous devez ajouter un troisième bool propriété à la fois de vos modèles,
et de le définir par défaut à false, et obtenez-il vrai sur l'affichage lorsque vous cochez la case correspondante,
et, selon des vraies valeurs, vous pouvez faire ce que vous voulez avec le correspondant sélectionné les valeurs et les textes ainsi
voici mon code que j'ai utilisé certains de réaliser le même:
modèle contient une propriété:
et voici comment j'ai récupéré le texte sur les valeurs:
inspecter le code html dans google chrome pour vérifier quel type d'id que vous obtenez
OriginalL'auteur Rupinder Kaur