MVC 下拉列表 - 如何设置虚拟值
这是一种两人合作的关系:
1) 我应该从哪里提供 DDL? 现在我在视图模型中设置了 List。我见过很多人在 ViewData[] 中设置列表。这是我应该做的吗?为什么?
我注意到 DDL 值没有保留在 HttpPost 中,我必须在视图模型中重置它们。如果我使用 ViewData[] 我假设这是没有必要的?
填充 LinqToSQL 中的 DDL
2)我通过new SelectList(dataContext.Products.ToList(),"ID","Name");
; 我应该如何添加一个虚拟字段,例如“- -选择产品--" val="-1"?
This is kind of a two parter:
1) Where should I be feeding my DDL's from? Right now I have List set in my viewmodel. I've seen a lot of people set the lists in the ViewData[]. Is that what I should be doing, and why?
I've noticed that the DDL values are not retained in the HttpPost and I have to reset them in the view model. If I use ViewData[] I am assuming this is not necessary?
2) I am populating my DDL's from LinqToSQL by
new SelectList(dataContext.Products.ToList(),"ID","Name");
How should I add a dummy field like "--Select a Product--" val="-1"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
处理下拉列表数据的方法有很多种。我个人使用过滤器将集合注入到视图模型中(至少 90% 的时间),但我不会在那里深入讨论。您可以使用 Insert 方法添加占位符项。
请注意,我进行了从 Product 到 OptionItem 的投影,因为如果您只需要两个字段,则实际上不需要查询整个 Product 对象。
There are a huge variety of methods to deal with drop down list data. I personally use filters to inject collections into view models (90% of the time at least), but I won't go into that there. You can use the Insert method to add a placeholder item.
Note I did a projection from Product to OptionItem because you don't really need to query for the entire Product object if you just want two fields.