c# - 强类型绑定(bind)到 DropDownListFor?

标签 c# asp.net asp.net-mvc asp.net-mvc-5 html.dropdownlistfor

通常我会使用 SelectList 将数据绑定(bind)到 DropDownListFor:

@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Orders, "OrderId", "ItemName"))

有没有办法通过强类型的 lambda 而不是使用属性字符串来做到这一点。例如:

@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Orders, x => x.OrderId, x => x.ItemName))

最佳答案

您可以在 Controller 中创建选择列表本身并将其分配给 View 模型中的属性:

public IEnumerable<SelectListItem> OrdersList { get; set; }

Controller 中的代码如下所示:

model.OrdersList = db.Orders
                     .Select(o => new SelectListItem { Value = o.OrderId, Text = o.ItemName })
                     .ToList();

在 View 中你可以这样使用它:

@Html.DropDownListFor(model => model.CustomerId, Model.OrderList)

我个人更喜欢这种方法,因为它减少了您 View 中的逻辑。它还使您的逻辑保持“强类型”,任何地方都没有魔法字符串。

关于c# - 强类型绑定(bind)到 DropDownListFor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20419957/

相关文章:

C# 验证多个文本框?

c# - 有没有什么方法可以避免对过于简单化的 WPF/XAML 转换器的需求?

asp.net - 游戏数据库 - 按控制台对游戏进行分类

jquery - 动态数据绑定(bind)到knockout js中的嵌套属性 - 带对话框(asp.net mvc 3)

c# - Entity Framework 中可以设置执行时间吗?

c# - 当应用程序的主视图关闭但辅助 View 仍然打开并从开始菜单打开应用程序时,如何恢复 UWP 应用程序的主视图?

asp.net - ASP.NET MVC 国际化的(历史)最佳实践

asp.net-mvc - 有没有办法在包名中添加文件扩展名?

asp.net - seo 的正确 url 路由

c# - 在不同的 WCF 实例上共享数据状态