2012-01-26 61 views
0

我有这样的代码:获得一个MVC DropDownList中显示所选项目

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

这工作,但不显示所选项目。有没有人有什么建议 ?

+0

在你的第二个代码块中,我看不到Selected =(a.CouponId == Model.CouponForAppointmentReminders.CouponId)How do you say to @ Html.DropDownList to select something then? – 2012-01-27 02:24:25

+0

你错过了发生了什么。 SelectList构造函数为选定的值提供一个参数。事实证明,我的名字和优惠券是错误的。我试着发表一个答案,但是SO不让我这样做(我点击'答案'并浏览了一下,所以我没有看到答案),所以这就是为什么这是坐在这里没有解决方案,尽管我找到了一个。仍然想知道为什么没有办法让第一块代码工作,我可以看到。 – cgraus 2012-01-27 03:16:24

回答

1

步骤1中创建具有选定值视图模型

步骤2.在视图模型在选择列表

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

你有它,当下拉呈现时,它会选择选定的值!

祝你好运!