我有这段代码:
@Html.DropDownList("ddlCouponsAppointment",
Model.Coupons.Select(a => new SelectListItem {
Text = a.Name,
Value = a.CouponId.ToString(),
Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId)
}),
"None",
new { @class = "normalcell" })
这已经有效了很多年。现在,它抛出一个错误,谷歌告诉我是因为我不允许在一个被映射到类的实体上调用ToString(这个类没有改变,所以我不知道它以前是如何工作的)。所以我添加了一个名为CouponIdStr的属性,它是一个字符串表示。这不起作用(爆炸b / c属性未映射到DB)。我尝试使值等于string.Empty + a.CouponId(因为C#会将其连接为字符串)。它爆炸了。
所以我尝试了这个:
@Html.DropDownList("ddlCouponsAppointment",
new SelectList(Model.Coupons,
"Name",
"CouponId",
Model.CouponForAppointmentReminders.CouponId),
"None",
new { @class = "normalcell" })
这样可以,但不会显示所选项目。有没有人有任何建议?
答案 0 :(得分:1)
步骤1.创建具有所选值
的ViewModel步骤2.在该ViewModel中,您可以在选择列表中找到所需的项目列表
public class ViewModel {
public int Selected {get;set;}
public IEnumerable<Option> Options {get;set;}
}
步骤3.在您的视图中,使用DisplayFor方法
Html.DisplayFor(m => m.Selected, new SelectList(Model.Options, "Id", "Display"));
有了它,当下拉列表呈现时,它将选择所选的值!
祝你好运!