C# MVC правильный способ построения View с опциями флажка и автоматической привязкой ответа к объекту?

Я хочу создать веб-страницу для хранения любимых фруктов пользователя.

вот мои модели:

public class user
{
    public long UserId {get; set;}
    public string UserName {get;set;}
}

public class userFruit
{
    public long UserFruitId {get; set;}
    public long UserId {get;set;}
    public long FruitId {get;set;}
}

public class Fruit
{
    public long FruitId {get;set;}
    public string FruitName {get;set;}
}

И я создал связь между User и userFruit, чтобы в User Object содержался список UserFruit.

В контроллере я передам две вещи представлению:
- Модель: модель пользователя
- ViewBag: фрукты

В представлении я хочу перечислить все фрукты из VierBag.Fruit в формате CheckBox, например
- [  ] Яблоко
- [  ] Оранжевый
- [  ] Банан
Пользователь может выбрать более одного фрукта.

Каков наилучший способ реализовать представление, чтобы ответ мог автоматически связываться с объектом UserFruit?

1 ответ

Я бы лично сделал ViewModel и есть List<Fruit> вместо того, чтобы использовать ViewBag,

public class FruitViewModel
{
    public bool Apple { get; set; }
    public bool Orange { get; set; }
    public bool Banana { get; set; } 
}

public ActionResult ListFruits() 
{
   var model = new FruitViewModel();
   return View("Fruits", model);
}

Тогда, по вашему мнению, вы можете использовать @Html.CheckBoxFor

@Html.CheckBoxFor(m => m.Apple, new { id = "chkApple" });
@Html.CheckBoxFor(m => m.Orange, new { id = "chkOrange" });
@Html.CheckBoxFor(m => m.Banana, new { id = "chkBanana" });

Эти свойства будут тогда true или же false в зависимости от выбора пользователя и отправки обратно на сервер при отправке формы.

Другие вопросы по тегам