我有这个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>
}
答案 0 :(得分:1)
在将查询传递给视图之前,您需要确保在查询中只能获得分散值。
projects = (from s in db.Project
where s.ID == i
select s).Distinct().ToList();
var projectList = db.Project.Distinct().ToList();