【问题标题】:Filter records in database according to the selected checkboxes using MVC使用 MVC 根据选中的复选框过滤数据库中的记录
【发布时间】:2015-09-02 06:34:51
【问题描述】:

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

  1. 初学者
  2. 中级
  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。我不知道如何得到这个结果。请帮忙。

【问题讨论】:

  • 根据复选框的值使用where CourseLevel.Contains(??) 子句。
  • 我知道那件事,我不知道如何在我的视图中使用 checkboxex 并将其解析为方法。 :(
  • 编辑您的问题以显示如何在视图中生成复选框
  • 我编辑了问题并插入了我的视图是什么样的。那里没有复选框。我实际上不知道如何使用它们。

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


【解决方案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 的值

【讨论】:

  • 非常感谢@stephen 它真的很有帮助并且工作完美。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 2020-10-10
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多