发布项目列表的复选框的值

时间:2019-07-15 19:07:24

标签: c# asp.net-core

我仍然在学习asp.net核心方面还很陌生,并且我面临复选框的问题。我有一个项目(课程)列表,这些项目是通过存储在sql表中的方式显示的,并且将它们显示在视图内的表中,我为复选框添加了以下代码,但未发布任何值。我已经尝试了很多复杂的解决方案,但是在我的情况下它们都没有起作用,因此我们将不胜感激。

  • 视图:
@foreach (Course course in Model)
{
   <tr>
      <td>@Html.CheckBoxFor(modelItem => course.isSelected)</td>
   </tr>
}

  • 模型(课程)具有以下属性:
  [DefaultValue(false)]
  public bool isSelected { get; set; }

  • 控制器:
        public async Task<ActionResult> Index(string searchString)
        {
            var courses = from m in _context.Courses
                            select m;

            ViewData["Filtering"] = searchString;

            if (searchString != null)
            {
                courses = courses.Where(m => m.Name.Contains(searchString.ToUpper().Replace(" ", "")));
            }
            return View(await courses.AsNoTracking().ToListAsync());
        }

1 个答案:

答案 0 :(得分:0)

如果要将复选框值列表发布到HttpPost操作,则可以为每个复选框使用设置相同的name属性,请参阅我的演示:

1.View(使用表单标签)

<form method="post">
  @foreach (Course course in Model)
  {
     <tr>
        <td> <input type="checkbox" name="courseSelectedStatus" value="@course.isSelected" />
     </tr>
  }
  <input type="submit" value="submit" />
</form>

2。动作:

[HttpPost]
 public async Task<IActionResult> Index(List<bool> courseSelectedStatus)
    {
       //other logic
        return View();
    }

由于不清楚如何处理复选框值,您还可以参考下面的链接,以传递List模型中的数据:

Bind dynamic inputs