使用MVC

时间:2015-09-02 06:34:52

标签: c# linq entity-framework asp.net-mvc-4 razor

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

  1. Begineer
  2. Intemidiate
  3. 预先
  4. 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。我不知道如何得到这个结果。请帮助。

1 个答案:

答案 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

的值