这是一个两个部分:
1)我应该从哪里开始提供我的DDL?现在我在我的viewmodel中设置了List。我见过很多人在ViewData []中设置列表。那是我应该做的,为什么?
我注意到HttpPost中没有保留DDL值,我必须在视图模型中重置它们。如果我使用ViewData []我假设这不是必要的吗?
2)我正在通过
从LinqToSQL填充我的DDL new SelectList(dataContext.Products.ToList(),"ID","Name");
我应该如何添加像“ - 选择产品 - ”val =“ - 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对象。