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
в зависимости от выбора пользователя и отправки обратно на сервер при отправке формы.