我的剃刀视图中有一个Ajax.BeginForm。我想要3个复选框。
checkoxes可以选择任何组合。当我单击提交按钮时,我的控制器中的波纹管方法将被触发。
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的字段。我想知道如何根据所选的复选框过滤课程。 EX:如果我选择begineer和Intermidiate checkboex。我想从这个级别获得所有courseCategories。我不知道如何得到这个结果。请帮助。
答案 0 :(得分:1)
在您查看中,为每个值生成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)
CourseLevel的值将是所选复选框的数组,例如[ "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