dropdownlist中的值不同,默认值为Filter

时间:2013-03-27 15:45:45

标签: c# asp.net-mvc drop-down-menu filter

我有这个ViewData和DropDownList需要有不同的值。让我在上下文中,在我创建“项目”时,我可以将其设置为“样式值”(例如“字符串字段”),例如“Pop”。在我的下拉过滤器中的索引页面上,我将有“Pop”。如果我创建了第二个项目,其样式值中包含“Pop”,则下拉列表将显示两次。我不希望这样。

我要做的第二件事是在我的下拉过滤器中设置一个默认值,这样当我选择该值时,它将删除所有过滤器并显示所有已添加项目的完整列表。

如果我不清楚的话,就这么说吧。

以下是我的代码中的内容。

我的控制器:

public ActionResult Index()
    {
        var projects = from s in db.Project select s;
        var projectList = db.Project.ToList();

        if (Request.Form["FilterStyle"] != null && Request.Form["FilterStyle"] != "")
        {
            int i = int.Parse(Request.Form["FilterStyle"]);
            projects = from s in db.Project
                       where s.ID == i
                       select s;
        }

        if (Request.Form["FilterStyle"] == null)
        {
            projects = from s in db.Project select s;
        }

        ViewData["Styles"] = new SelectList(projectList, "ID", "Style");

        return View(projects);
    }

我的观点:

@using (Html.BeginForm())
{
<table>
    <thead>
        <tr align="left">

        ....

            <th>
                Style :
                <br /><br />
                @Html.DropDownList("FilterStyle", (SelectList)ViewData["Style"], " ", new { onchange = "this.form.submit()" })
            </th>

        ....

        </tr>    
    </thead>

    <tbody>

    ....

    </tbody>
</table>
}

1 个答案:

答案 0 :(得分:1)

在将查询传递给视图之前,您需要确保在查询中只能获得分散值。

projects = (from s in db.Project
                       where s.ID == i
                       select s).Distinct().ToList();



  var projectList = db.Project.Distinct().ToList();