C#MVC是构造带有复选框选项的视图并将答案自动绑定到对象的正确方法

本文关键字:答案 绑定 方法 对象 视图 选项 复选框 C#MVC | 更新日期: 2023-09-27 18:19:43

我想制作一个网页来存储用户最喜欢的水果。

这是我的型号:

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;}
}

我在UseruserFruit之间创建了一个链接,这样一个用户对象就包含了一个userFruit列表。

在控制器中,我将向视图传递两件事:
-模型:用户模型
-ViewBag:水果

在视图中,我想列出VierBag中的所有水果。水果采用复选框格式,例如。
-[nbsp;]Apple
-[nbsp; ]橙色
-[nbsp;nbsp;]香蕉
允许用户选择多个水果。

实现View以使答案能够自动绑定到UserFruit对象的最佳方式是什么?

C#MVC是构造带有复选框选项的视图并将答案自动绑定到对象的正确方法

我会亲自制作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" });

根据用户的选择,这些属性将是truefalse,并在提交表单时发布回服务器。