1

我有这个 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>
}
4

1 回答 1

1

在将查询传递给视图之前,您需要确保在查询中您只会获得不同的值。

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



  var projectList = db.Project.Distinct().ToList();
于 2013-03-27T16:04:58.540 回答