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

发布于 2024-09-19 17:25:28 字数 379 浏览 3 评论 0原文

这是一种两人合作的关系:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

但可醉心 2024-09-26 17:25:30

处理下拉列表数据的方法有很多种。我个人使用过滤器将集合注入到视图模型中(至少 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 对象。

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.

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文