通常,我会用一个DropDownListFor将数据绑定到SelectList。
@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Orders, "OrderId", "ItemName"))是否有任何方法可以通过强类型lambdas而不是使用属性字符串来完成此操作。例如:
@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Orders, x => x.OrderId, x => x.ItemName))发布于 2013-12-06 09:51:20
您可以在控制器中创建选择列表,并将其分配给视图模型中的属性:
public IEnumerable<SelectListItem> OrdersList { get; set; }控制器中的代码如下所示:
model.OrdersList = db.Orders
.Select(o => new SelectListItem { Value = o.OrderId, Text = o.ItemName })
.ToList();在视图中,您可以这样使用它:
@Html.DropDownListFor(model => model.CustomerId, Model.OrderList)我个人更喜欢这种方法,因为它减少了您的观点中的逻辑。它还保持您的逻辑‘字符串类型’,没有魔术字符串任何地方。
发布于 2013-12-06 09:22:33
似乎没有一个重载的构造函数允许这样做。但是手动将DataTextField和DataValueField指定为字符串没有坏处,是吗?
发布于 2013-12-06 09:23:07
为此,您可以使用ViewBag将数据存储到下拉控件中
以下是一个例子.
@Html.DropDownList("department", (IEnumerable<SelectListItem>)@ViewBag.DepartmentList, new { value = @ViewBag.department, style = "width:140px", onchange = "OnDepartmentChange(this)" })在索引方法中的控制器中,您可以编写如下
ViewBag.Department = department;https://stackoverflow.com/questions/20419957
复制相似问题