使用MVC根据选中的复选框过滤数据库中的记录
本文关键字:过滤 数据库 记录 复选框 MVC 使用 | 更新日期: 2023-09-27 18:10:44
我有一个Ajax。BeginForm在我的剃刀视图。我想要3个复选框。
- 心仪
- 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的字段。我想知道如何根据选中的复选框筛选课程。例如:如果我选择初级和中级复选框。我想要得到那个级别的所有课程类别。我不知道怎么得到那个结果。请帮助。
在您的视图中,为每个值生成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