【问题标题】:Mvc Checkboxes Bind with model BoolMvc 复选框与模型 Bool 绑定
【发布时间】:2014-08-21 20:10:05
【问题描述】:

我有一个带有 bool isSelected 属性的 mvc 模型。我将 IEnumerable 传递给我的视图并将其返回给我的控制器。问题是,即使复选框被选中,我总是得到错误的复选框这是一些代码:

型号:

public class User
{
    public string Name { get; set; }
    public int ID { get; set; }
    public string Email { get; set; }
    public bool selected { get; set; }
    public string company { get; set; }
    public string role { get; set; }
}

查看:

for(i=0;i<Model.Count();i++) 
{
   @Html.CheckBoxFor(modelItem => modelItem.ElementAt(i).selected)
}

【问题讨论】:

  • 你想通过这段代码实现什么:@Html.CheckBoxFor(modelItem => modelItem.ElementAt(i).selected)?
  • @KrunalPatil Iam 试图将我从模型中选择的属性与复选框绑定
  • 这是否意味着您要传递多行?
  • 是的,我正在传递我的模型列表,创建了多行
  • 所以需要某种集合,如 List 或 IList 来存储它,而不仅仅是你可以获取多行的信息,但我在这里看到的是你没有这样做,并且使用 for 循环

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

您正在使用此循环创建多个具有相同名称的元素(在您的情况下为 &lt;input type="checkbox" name="selected" ...&gt;。由于这是一个集合,您的名称属性应该是 ..name="[0].selected....name="[1].selected..

如果可能,将集合更改为 IList,以便您可以索引名称

for (int i = 0; i < Model.Count; i++)
{
  @Html.CheckboxFor(m => m[i].selected)

或者,您可以将自定义 EditorTemplate 用于 typeof User 并使用

@Html.EditorFor(m => m)

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2013-03-06
    • 2018-07-24
    • 2011-07-20
    • 2015-03-02
    • 1970-01-01
    • 2016-08-10
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多