2011-11-28 79 views
2

我試圖手動創建一個列表,然後發送到視圖:MVC的SelectList傳遞價值

我有以下

var MyList = new[] { 
    new ListEntry {Name = "John Moore"}, 
    new ListEntry {Name = "Jim Baker"}    

    }; 

    ViewBag.MyList = new SelectList(MyList , "Name"); 

在視圖中,我有以下幾點:

@Html.DropDownListFor(model => model.name.UserName, (IEnumerable<SelectListItem>)ViewBag.MyList) 

我期待看到約翰·摩爾和吉姆·貝克在列表中,而是列表有以下2行:Digit1.Controllers.ListEntry

任何想法如何我可以清單列表顯示名稱。同樣當我提交時,我還需要表中更新的名稱爲 (例如:John Moore或Jim Baker)

回答

1

您對SelectList使用了錯誤的超載。您需要使用,告訴它這顯示過載/值使用:

new SelectList(myList, "Value", "Name"); 

價值和名稱在這種情況下是要使用的值,並顯示域的對象的屬性的名稱您的選擇列表。

您所使用的過載是這樣的:

SelectList(IEnumerable<T> items, object selectedValue) 

基本上你是說你的SelectList有「名稱」作爲選擇的(默認)值。