使用MVC根据选中的复选框过滤数据库中的记录

本文关键字:过滤 数据库 记录 复选框 MVC 使用 | 更新日期: 2023-09-27 18:10:44

我有一个Ajax。BeginForm在我的剃刀视图。我想要3个复选框。

  1. 心仪
  2. Intemidiate

复选框可以选择任何组合。当我点击提交按钮下面的方法在我的控制器将触发。

public PartialViewResult SearchCourseCriteria(){
        var courses = from s in db.CourseCategories
                      select s;
        return PartialView("_Courses", courses);
}

这是我的观点

 @using (Ajax.BeginForm("SearchCourseCriteria", new AjaxOptions
    {
       UpdateTargetId = "CourseList",    
       InsertionMode = InsertionMode.Replace,  
       HttpMethod = "GET"
    }))
    {
        td>
           @Html.CheckBoxFor()                                        
        </td>
        <td>
           <input type="submit" value="Search" class="btn " />
        </td>
   }

在我的模型中有一个名为CourseLevel的字段。我想知道如何根据选中的复选框筛选课程。例如:如果我选择初级和中级复选框。我想要得到那个级别的所有课程类别。我不知道怎么得到那个结果。请帮助。

使用MVC根据选中的复选框过滤数据库中的记录

在您的视图中,为每个值生成3个复选框

<label>
  <input type="checkbox" name="courselevel" value="Begineer" /> // Beginner?
  <span>Begineer</span>
<label>
<label>
  <input type="checkbox" name="courselevel" value="Intemidiate" /> // Intermediate?
  <span>Intemidiate</span>
<label>
... // ditto for advance

然后给方法添加一个参数

public PartialViewResult SearchCourseCriteria(string[] CourseLevel)

coursellevel的值将是选中复选框的数组,例如,如果您选中了第一个和第三个复选框,则[ "Begineer", "advance" ]

你可以修改你的查询

var courses  = from s in db.CourseCategories
               where CourseLevel.Contains(s.CourseLevel)
               select s;

var courses= db.CourseCategories.Where(c => CourseLevel.Contains(c.CourseLevel));
旁注:我建议您使用enum来定义CourseLevel
的值。