mercredi 20 janvier 2016

Razor checkboxes for list of models

User Model

public class UserModel
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Location { get; set; }
    public IEnumerable<UserPets> UserPets { get; set; }
}

User Pets Model

public class UserPetsModel
{
    public PetModel Pet{ get; set; }
    public bool UserHasPet { get; set; }
}

Using these 2 models I am creating an edit page where a User can come in and edit which Pets they have.

To enable them to state which pets they have I am trying to use checkboxes.

Edit Page

@model Models.UserModel

@using (Html.BeginForm())
{
   <div class="form-group">
        @Html.LabelFor(model => model.FirstName)
        @Model.FirstName
   </div>

    @foreach (var userPets in Model.UserPets)
    {
        @Model.Pet.AnimalName
        <div>
            @Html.CheckBoxFor(u => userPets .UserHasPet)
        </div>
    }

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>
}

The problem I am having is when trying to map the UserModel back to the controller action. When I press the save button, everything on the UserModel is being mapped back to the controller apart from the UserPetsModels which I believe is due to the use of the foreach.

Is there another way in which I can display a checkbox for each UserPetModel without using a foreach or a for loop.




Aucun commentaire:

Enregistrer un commentaire