2015-10-16 69 views
0

我的查詢獲取了所有正確的值並且填充了選擇列表,但我的下拉列表僅顯示了選擇列表中的第一個值。我怎樣才能讓它顯示船長的返回值?dropdownlistfor無法顯示正確的值

視圖模型:

public class EditTeamsView : BaseCommunityView 
    { 
     ... 
     public IList<Domain.Team> ExistingTeams { get; set; }    
    ... 
     public EditTeamsView() 
     {    
      ExistingTeams = new List<Domain.Team>(); 

     } 

    } 

public class Team 
    { 
     ...  
     public string Captain { get; set; } 
     public IEnumerable<SelectListItem> MemberSelectList { get; set; } 
    } 

查看:

@for (var c = 0; c < Model.ExistingTeams.Count; c++) 
        { 
         @Html.DropDownListFor(x => x.ExistingTeams[c].Captain, Model.ExistingTeams[c].MemberSelectList, 
             new { @class = "form-control "}) 
} 
+0

你有能力在你的項目中使用jQuery嗎? – Chad

回答

0

在下拉列表中的每個選項都需要一個value屬性和顯示性能,所以你可能需要你的團隊類的MemberSelectList對象改變高達IEnumerable的包含值和文本屬性。

要設置一個基於字符串值的下拉列表的默認值,就像你擁有的那樣,新建一個SelectList,它需要一個IEnumerable對象列表,比如你擁有的一個值屬性,一個文本屬性,然後默認值對象。

請看這裏:https://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist.selectlist(v=vs.118).aspx#M:System.Web.Mvc.SelectList

@Html.DropDownListFor(x => x.ExistingTeams[c].Captain, 
    new SelectList(Model.MemberSelectList, "Value", "Text", Model.Captain) 
) 
+0

這聽起來像我的查詢中的問題,我的列表是用一個簡單的選擇列表創建的。 MemberSelectList = team.Members.ToSimpleSelectList();我會正確地創建它並報告返回 – BMills

+0

是的,您的解決方案有效,謝謝。我現在也更好地理解選擇列表。 :) – BMills

+1

只是想補充一點,在我的情況下工作的代碼是這樣的:@ Html.DropDownListFor(x => Model.Captain,new SelectList(Model.ExistingTeams [c] .MemberSelectList,「Value」,「文本「,Model.ExistingTeams [c] .Captain), new {@class =」form-control「}) – BMills