ASP.Net MVC将项目添加到绑定下拉列表

时间:2009-06-05 12:07:56

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

我的页面视图当前有一个下拉列表,它从控制器绑定到一个集合。这工作正常,但是我想在下拉列表的顶部插入一个不在我的集合中的项目,例如列表当前获得以下项目

Open
Closed

我想添加“All”的第三个选项,但我不想将此选项添加到我的数据库中。在Webforms中我会绑定控件然后插入另一个项目但是看起来这对MVC来说是不可能的,我是否正确地认为我需要在视图中添加一些Javascript以便在下拉列表绑定后添加这个新项目?

由于

3 个答案:

答案 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"})