Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVC根据选中的复选框筛选数据库中的记录_C#_Linq_Entity Framework_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 使用MVC根据选中的复选框筛选数据库中的记录

C# 使用MVC根据选中的复选框筛选数据库中的记录,c#,linq,entity-framework,asp.net-mvc-4,razor,C#,Linq,Entity Framework,Asp.net Mvc 4,Razor,在我的razor视图中有一个Ajax.BeginForm。我想要3个复选框 贝基内尔 中间人 前进 复选框可以选择任何组合。当我点击提交按钮时,我的控制器中的贝娄方法将被触发 public PartialViewResult SearchCourseCriteria(){ var courses = from s in db.CourseCategories select s; return PartialView("

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

  • 贝基内尔
  • 中间人
  • 前进
  • 复选框可以选择任何组合。当我点击提交按钮时,我的控制器中的贝娄方法将被触发

    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>
    
       }
    
    @使用(Ajax.BeginForm(“SearchCourseCriteria”),新的AjaxOptions
    {
    UpdateTargetId=“课程列表”,
    InsertionMode=InsertionMode.Replace,
    HttpMethod=“获取”
    }))
    {
    td>
    @Html.CheckBoxFor()
    }
    
    在我的模型中,有一个名为CourseLevel的字段。我想知道如何根据选中的复选框筛选课程。
    例:如果我选择Beginer和Intermediate checkboex。我想从这些级别获取所有课程类别。我不知道如何得到那个结果。请提供帮助。

    在您的视图中,为每个值生成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
    
    CourseLevel的值将是所选复选框的数组,例如,如果选中了第一个和第三个复选框,
    [“Begineer”,“advance”]

    然后可以将查询修改为

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


    旁注:我建议您使用
    enum
    来定义
    CourseLevel

    的值,并根据复选框的值使用
    where CourseLevel.Contains(??)
    子句。我知道这件事,我不知道如何在我的视图中使用checkboxex并将其解析为方法:(编辑您的问题以显示如何在视图中生成复选框我编辑了问题并插入了“我的视图是什么样子的”。那里没有复选框。我不知道如何实际使用它们。非常感谢@stephen Its真的很有帮助并且工作得很好。再次感谢您。
    var courses  = from s in db.CourseCategories
                   where CourseLevel.Contains(s.CourseLevel)
                   select s;
    
    var courses= db.CourseCategories.Where(c => CourseLevel.Contains(c.CourseLevel));