【发布时间】:2012-01-26 23:36:12
【问题描述】:
我有这个代码:
@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 属性未映射到数据库)。我尝试使值等于 string.Empty + a.CouponId (因为 C# 会将其连接为字符串)。炸了。
所以我尝试了这个:
@Html.DropDownList("ddlCouponsAppointment",
new SelectList(Model.Coupons,
"Name",
"CouponId",
Model.CouponForAppointmentReminders.CouponId),
"None",
new { @class = "normalcell" })
这有效,但不显示所选项目。有人有什么建议吗?
【问题讨论】:
-
在你的第二个代码块中我看不到 Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId) 你怎么说@Html.DropDownList 然后选择一些东西?
-
你错过了正在发生的事情。 SelectList 构造函数采用选定值的参数。事实证明,我的名字和优惠券ID 弄错了。我试图发布一个答案,但 SO 不允许我这样做(我点击“答案”并浏览了,所以我没有看到回复),所以这就是为什么尽管我找到了一个没有解决方案的原因.仍然想知道为什么第一块代码无法工作,我可以看到。
标签: c# asp.net-mvc html-select