获取MVC DropDownList以显示所选项目

时间:2012-01-26 23:36:13

标签: c# asp.net-mvc html-select

我有这段代码:

@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" })

这样可以,但不会显示所选项目。有没有人有任何建议?

1 个答案:

答案 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"));

有了它,当下拉列表呈现时,它将选择所选的值!

祝你好运!