2009-06-05 82 views
3

我的页面视图当前有一个下拉列表,它正在绑定到来自控制器的集合。这是工作的罚款,但我想一个项目插入到这不是我的集合中的下拉列表的顶部如列表目前得到以下物品ASP.Net MVC将项目添加到绑定下拉列表

Open 
Closed 

我想补充的“全部”第三个选择但我不想将此选项添加到我的数据库。在Webforms中,我将刚刚绑定控件,然后插入另一个项目,但似乎这是不可能与MVC,我正确的想法,我将需要添加一些Javascript的视图添加这个新的项目,一旦下拉列表已被绑定?

感谢

+0

为什么不使用<%= Html.DropDownList( “下拉”, “所有”)%>?因为在服务器端的值将为空或空字符串我猜..你得到的条件。 – Vikas 2009-06-05 13:19:40

回答

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"]) %> 
+0

如果在viewdata中包含相同的名称,我们也可以直接使用<%= Html.DropDownList(“TableSelect”)%>。 – Vikas 2009-06-05 12:23:07

0

简单

你可以把它作为你的控制器希望。

并将其传递给viewdata。

其他选项是直接在查看页面。

<%= Html.DropDownList("DropDown","all")%> 

但您可以添加只有一个选项..

确保你没有存储乌尔分贝添加的选项,对不对? 因此在保存之前,请检查选项值是否有效并应用您的逻辑。

+0

这个值是空字符串,因此我认为它不会被回传。如果你想要一个像“all”而不是“none”的值,你需要调整服务器端的列表(或使用Javascript)。 – tvanfosson 2009-06-05 12:21:52