尝试使用两个下拉列表进行过滤

时间:2013-10-29 05:44:09

标签: c# asp.net asp.net-mvc-4 html-select

我正在使用MVC,我正试图通过两个下拉列表来过滤数据。

我有一个工作,只是不知道让第二个工作的逻辑

这是我的代码:

控制器:

    public ActionResult Index(int? DepartmentID, int? JobTitleID)
    {
        DepartmentDropDownList();
        JobDropDownList();
        var employees = db.Employees.Include(e => e.Department).Include(e => e.JobTitle);

        if (DepartmentID.HasValue || JobTitleID.HasValue)
        {
            employees = employees.Where(j => j.JobTitleID == JobTitleID);
            //somehow filter departments here
        }
        return View(employees.ToList());
    }

查看:

@model IEnumerable<josh_MVC_Company.Models.Employee>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@using (Html.BeginForm())
{
    <p> Select by Department: @Html.DropDownList("DepartmentID", "Departments")  </p>

    <p> Select by Job Title: @Html.DropDownList("JobTitleID","Job Titles")  </p>
        <input type="submit" value="Filter" />
}

1 个答案:

答案 0 :(得分:1)

在实现LINQ查询(ToList())之前,您必须按两个字段进行过滤。

if (JobTitleID.HasValue)
    {
        employees = employees.Where(j => j.JobTitleID == JobTitleID.Value);
    }

if (DepartmentID.HasValue)
    {
        employees = employees.Where(j => j.DepartmentID == DepartmentID.Value);
    }
return View(employees.ToList());

这样,如果没有任何值,则根本不会对其进行过滤。

(如您所见,您可以根据需要链接尽可能多的Where(Expression<Func<T,bool>>)