我的页面视图当前有一个下拉列表,它从控制器绑定到一个集合。这工作正常,但是我想在下拉列表的顶部插入一个不在我的集合中的项目,例如列表当前获得以下项目
Open
Closed
我想添加“All”的第三个选项,但我不想将此选项添加到我的数据库中。在Webforms中我会绑定控件然后插入另一个项目但是看起来这对MVC来说是不可能的,我是否正确地认为我需要在视图中添加一些Javascript以便在下拉列表绑定后添加这个新项目?
由于
答案 0 :(得分:9)
没有。将数据构造为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"] ) %>
答案 1 :(得分:0)
简单
你可以在控制器中按照自己的意愿制作它。
并在viewdata中传递它。
其他选项直接在视图页面中。
<%= Html.DropDownList("DropDown","all" )%>
但是你只能添加一个选项..
确保您没有在ur db中存储添加的选项,对吧? 所以在保存之前,请检查操作中的选项值并应用您的逻辑。
答案 2 :(得分:0)
较新的实施
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"})