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

Posted

技术标签:

【中文标题】C# MVC 使用复选框选项构造视图并将答案自动绑定到对象的正确方法?【英文标题】:C# MVC the proper way to construct the View with checkbox options and auto bind answer to object? 【发布时间】:2013-06-25 07:07:30 【问题描述】:

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

这是我的模型:

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 列表。

在 Controller 中,我将向 View 传递两件事: - 模型:用户模型 - ViewBag:水果

在视图中,我想以 CheckBox 格式列出 VierBag.Fruit 中的所有水果,例如 - [  ] 苹果 - [  ] 橙色 - [  ] 香蕉 允许用户选择一种以上的水果。

实现 View 以便答案可以自动绑定到 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" );

然后,这些属性将是 truefalse,具体取决于用户的选择,并在提交表单时发布回服务器。

【讨论】:

感谢您的回答,但是水果列表是可扩展的,如何动态实现?另外,如何将答案绑定到 UserFruit 对象?

以上是关于C# MVC 使用复选框选项构造视图并将答案自动绑定到对象的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用模型绑定器时在 ASP.NET MVC 中往返视图数据

MVC 3 从视图、模型中检索复选框值

在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给控制器​​?

在C#中怎样禁止ListView控件Details视图中双击某个项时复选框会自动设置或取消的这个功能呢?

复杂对象和模型绑定器 ASP.NET MVC

jQuery ui 自动完成在 MVC c# 中不显示任何内容