2012-01-26 57 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")); 

你有它,當下拉呈現時,它會選擇選定的值!

祝你好運!