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;
我已经在 User 和 userFruit 之间创建了一个链接,因此一个用户对象包含一个 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" );
然后,这些属性将是 true
或 false
,具体取决于用户的选择,并在提交表单时发布回服务器。
【讨论】:
感谢您的回答,但是水果列表是可扩展的,如何动态实现?另外,如何将答案绑定到 UserFruit 对象?以上是关于C# MVC 使用复选框选项构造视图并将答案自动绑定到对象的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章
在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给控制器?