【问题标题】:How to set checkbox selected using two lists MVC如何使用两个列表 MVC 设置选中的复选框
【发布时间】:2017-03-17 15:06:33
【问题描述】:

我从 ViewBag 列表中绑定了多个复选框。我在添加记录时使用了这种模式。但现在我有 Edit 的情况。我已将选定的复选框 ID 保存在不同的表中。现在在编辑中,如何在添加该记录时根据用户选择来选择它们?

@foreach (var item in ViewBag.Features)
{
    <div class="form-group form-animate-checkbox col-md-4 col-sm-12">
        <input type="checkbox" class="checkbox Amenities" value="@item.ID" name="@item.Name">
        <label class="lblamenities">@item.Name</label>
    </div>
}

【问题讨论】:

  • 你需要设置每个复选框的checked 值。但是您的代码是尝试绑定到模型的一种糟糕的方式,并且永远不会提供真正的 2 路模型绑定或任何验证。使用包含属性int IDstring Namebool IsSelected 的视图模型,以便您可以使用@Html.CheckBoxFor() 绑定到Selected 属性
  • 例如,参考this answer

标签: asp.net-mvc checkbox


【解决方案1】:

在 ViewBag.Features 中是列表类型变量,其中包含 id 和名称,但在您的要求中,您需要在保存之前选中这些复选框。 因此,您可以将另一个参数或变量选择为 bool 类型,这些 id 保存在我们的数据库中,选择的变量为 true 否则为 false。

在查看页面中检查是否已检查,请参阅下面的代码....

@foreach (var item in ViewBag.Features)
{
    <div class="form-group form-animate-checkbox col-md-4 col-sm-12">
        <input type="checkbox" class="checkbox Amenities" value="@item.ID" name="@item.Name" checked='@(item.selected?"checked":"")'>
        <label class="lblamenities">@item.Name</label>
    </div>
}

【讨论】:

  • 这是错误的 - 如果 item.selected 的值是 trie 它呈现 checked="checked" 并且如果它的 false 它呈现 checked,这两者都会导致复选框被选中
  • 应该是&lt;input ... name="@item.Name" @(item.selected ? "checked" : null) /&gt;
  • 你没有仔细看代码。因为我在 true 中使用三元运算符,所以它呈现 checked="checked" 和 false 它呈现 checked=""
  • 没错。设置checked 属性意味着它已被检查(首先尝试您的代码!)
  • 试试你的代码!它不起作用 - checked="checked"checked=""checked="false"checked="anything" 都是一样的 - 他们设置了已选中的属性并选中了复选框!
猜你喜欢
  • 2016-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多