2011-12-29 25 views
0

我有一個DropDownList正確選擇正確的值並顯示它的問題。DropDownList html helper會與IList <SelectListItem>正常工作嗎?

我使用了以下內容:

@Html.DropDownListFor(x => Model.AdminSummaries[index].Status, AdminStatusReference.GetAdminStatusOptions(), new { id = string.Format("Status_{0}",index) }) 

它是好是AdminStatusReference.GetAdminStatusOptions()返回一個列表或者必須將它返回一個IEnumerable?

+0

列表是一個IEnumerable,所以我不認爲這是你的問題 – 2011-12-29 16:25:37

+0

你是什麼意思,通過正確選擇正確的值? 你的意思是默認的選定值,或者當你選擇一個項目併發布表單時,selectedItem是錯誤的? – 2011-12-29 16:27:05

+0

你有什麼問題?它與List無關IEnumerable無關。 – gdoron 2011-12-29 16:27:51

回答

2

型號的HTML:

public class MyViewModel 
{ 
    public IList<AdminSummary> AdminSummaries { get; set; } 
} 

public class AdminSummary 
{ 
    public string Status { get; set; } 
} 

public static class AdminStatusReference 
{ 
    public static IEnumerable<SelectListItem> GetAdminStatusOptions() 
    { 
     return new[] 
     { 
      new SelectListItem { Value = "1", Text = "status 1" }, 
      new SelectListItem { Value = "2", Text = "status 2" }, 
      new SelectListItem { Value = "3", Text = "status 3" }, 
     }; 
    } 
} 

控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      AdminSummaries = new[] 
      { 
       // preselect the first item 
       new AdminSummary { Status = "1" }, 

       // preselect the second item 
       new AdminSummary { Status = "2" }, 

       // nothing will be preselected because there is no xxx Value in the list 
       new AdminSummary { Status = "xxx" }, 
      }.ToList() 
     }; 
     return View(model); 
    } 
} 

查看:

@model MyViewModel 
@for (int index = 0; index < Model.AdminSummaries.Count; index++) 
{ 
    @Html.DropDownListFor(
     x => x.AdminSummaries[index].Status, 
     new SelectList(
      AdminStatusReference.GetAdminStatusOptions(), 
      "Value", 
      "Text", 
      Model.AdminSummaries[index].Status 
     ) 
    ) 
} 
+0

最後工作100%------非常感謝!!!!!! :-) – 2011-12-29 17:17:47

0

它會沒事的。
List<T>工具IEnumerable<T>

0

使用

@Html.DropDownListFor<> 
在我的項目

我一直在我看來,使用IEnumerable<SelectListItem>,因此手之前,我已經設置該項目具有屬性格式「選擇」爲真。這會設置默認項目。

enter image description here

忘記我可以編輯我原來的答覆:P 這裏是呈現在我的項目

+0

也許我不是很瞭解這個,我認爲DropDownList將輸入字段值作爲輸入,然後標記匹配的關鍵字選擇 – 2011-12-29 16:43:05