MVC下拉列表 - 如何设置虚拟值

时间:2010-09-19 17:18:34

标签: asp.net-mvc linq-to-sql drop-down-menu

这是一个两个部分:

1)我应该从哪里开始提供我的DDL?现在我在我的viewmodel中设置了List。我见过很多人在ViewData []中设置列表。那是我应该做的,为什么?

我注意到HttpPost中没有保留DDL值,我必须在视图模型中重置它们。如果我使用ViewData []我假设这不是必要的吗?

2)我正在通过

从LinqToSQL填充我的DDL

new SelectList(dataContext.Products.ToList(),"ID","Name");

我应该如何添加像“ - 选择产品 - ”val =“ - 1”这样的虚拟字段?

1 个答案:

答案 0 :(得分:1)

处理下拉列表数据的方法种类繁多。我个人使用过滤器将集合注入视图模型(至少90%的时间),但我不会在那里进行。您可以使用Insert方法添加占位符项。

var options = dataContext.Products.Select(p => new OptionItem(p.Id, p.Name)).ToList();
options.Insert(0, new OptionItem(-1, "--Select a Product--"));
// now use the options collection for the drop down list source

注意我做了一个从Product到OptionItem的投影,因为如果你只想要两个字段,你真的不需要查询整个Product对象。