目前我的页面视图上有一个下拉列表,它会绑定到控制器中的一个集合。这个功能很好用,但我想在下拉列表的顶部插入一个不在我的集合中的选项,例如当前列表中包含以下项目:
Open
Closed
我想要添加第三个选项"All",但我不想将此选项添加到我的数据库中。在Webforms中,我只需绑定控件,然后插入另一个项目,但似乎在MVC中不可能这样做。我是否正确地认为我需要在视图中添加一些JavaScript代码,在绑定下拉列表后添加此新项目?
谢谢
目前我的页面视图上有一个下拉列表,它会绑定到控制器中的一个集合。这个功能很好用,但我想在下拉列表的顶部插入一个不在我的集合中的选项,例如当前列表中包含以下项目:
Open
Closed
不。在控制器中将数据构造为SelectListItems列表并进行前置。
var list = db.Table
.Select( t => new SelectListItem
{
Key = t.ID.ToString(),
Value = t.Name
} )
.ToList();
list.Insert( 0, new SelectListItem { Key = "-1", Value = "All" } );
ViewData["TableSelect"] = list;
在视图方面:
<%= Html.DropDownList( "TableID",
(IEnumerable<SelectListItem>)ViewData["TableSelect"] ) %>
新的实现
var list = _db.Status.ToList();
list.Add(new Status(){DevelopmentStatusID = -1, DevelopmentStatusDesc = "All"});
var result = list.OrderBy(d => d.StatusID).ToList();
ViewBag.StatusID = new SelectList(result, "StatusID", "StatusDesc");
然后在 index.html 中
@Html.DropDownList("StatusID", null, htmlAttributes: new {@class = "form-control"})
简单易懂
您可以在控制器中自由设置。
然后通过ViewData传递。
另一个选项是直接在视图页面中设置。
<%= Html.DropDownList("DropDown","all" )%>
但是您只能添加一个选项。
确保您没有将添加的选项存储在数据库中,对吧? 因此,在保存之前,请检查操作中的选项值并应用您的逻辑。