2014-02-19 52 views
1

這段代碼已經在過去的工作很適合我的IEnumerable打造的SelectList:如何使用,而不是一個列表類型

@Html.DropDownListFor(
m => m.Per.TypeID, 
new SelectList(
    listItems, 
    "Value", 
    "Text", 
    Model.Per.TypeID 
    ) 
) 

但是這一次我想用一個類型來構建的SelectListIEnumerable的,所以我嘗試了以下內容:

@Html.DropDownListFor(
m => m.Per.TypeID, 
new SelectList(
    Model.ListTypes, 
    Model.Per.TypeID 
) 
) 

問題是,現在我的輸出看起來不正確:在選擇列表的每一個項目剛剛讀作「ListType

而不是‘價值’‘文本’ Model.ListTypes包含屬性TYPEID類型名,但我不明白如何通過這些作爲選擇列表的參數。

有什麼想法?

回答

3

我不知道有什麼不同,這裏假設ListTypes是具有TypeIDTypeName屬性...的構造函數重載服用性能的字符串名稱的類型的IEnumerable仍然可用。

您正在使用與之前不同的構造函數,因此綁定不知道從何處獲取顯示值(默認情況下它將綁定實體ToString)。

只需使用other constructor

@Html.DropDownListFor(
m => m.Per.TypeID, 
new SelectList(
    Model.ListTypes, 
    "TypeID", 
    "TypeName", 
    Model.Per.TypeID 
) 
) 
+0

哇,成功了!我不知道我可以在IEnumerable中調用這樣的屬性。我想我需要將它稱爲類似Model.ListTypes.First()。TypeName ..非常感謝! – D1v3

+0

@ D1v3這讓我感到困惑,因爲你的第一個代碼示例調用完全相同的構造函數。你碰巧給它一個'List '的事實並不重要,因爲構造函數需要一個'IEnumerable '。真的,你回答了你自己的問題。 –

相關問題