2011-08-23 54 views
0

首先抱歉發佈相同的問題,認爲有很多已發佈的帖子。我嘗試了所有可能的方法,最後除了發佈相同的問題之外,我還有其他選擇。MVC DropDownListFor SelectedValue收集問題

我想以友好的方式將枚舉綁定到DROPDOWNLISTFOR,但文本。所以在控制器我綁定像

List<SelectListItem> formTypeSelectList = new List<SelectListItem>(); 
     foreach (FormType type in ItemHelper.EnumToList<FormType>()) 
     { 
      SelectListItem formTypeList = new SelectListItem(); 
      formTypeList.Text = ItemHelper.GetEnumDescription(type); 
      formTypeList.Value = Convert.ToString((int)type); 
          formTypeList.Value = Convert.ToString((int)type); 

      formTypeSelectList.Add(formTypeList); 
     } 

     item.FormTypeSelectListItem = formTypeSelectList;` 

我的實體選擇列表的已

public FormType FormType { get; set; } 

    public List<SelectListItem> FormTypeSelectListItem { get; set; } 

    public SelectList FinalSelectList 
    { 
     get 
     { 
      return new SelectList(FormTypeSelectListItem, "Value", "Text", (int)FormType); 
     } 
    } 

我的觀點有

<%= Html.DropDownListFor(x => x.Item.FormType, Model.Item.FinalSelectList, new { id = "ddlFormType" })%> 

我甚至嘗試一些其他選項結合的觀點一樣

<%= Html.DropDownListFor(x => x.Item.FormType, new SelectListItem(Model.Item.FinalSelectList,"Value","Text",(int)Model.Item.formType)) %> 

沒有用,W我改變了HTML.DropdownList與一個名字指定它完美的工作,但我想只與dropdownlist綁定。

我甚至嘗試加入不同的ID,不同的名稱鑑於像

new{id="ddlformType",name="ddlformtype") 

毫無效果。有人能幫我解決這個問題嗎?

感謝, 阿基拉

回答

0

DropDownListFor正在尋找一個IEnumerable<SelectListItem>爲它的項目。嘗試將FormTypeSelectListItem代入FinalSelectList的DropDownListFor方法。你可能不得不把模型屬性作爲IEnumerable<SelectListItem>

+0

我也試過這個選項,但它的功能工作,即使現在我試過,但它的功能工作。我不知道我在做什麼錯。現在我的代碼看起來像<%= Html.DropDownListFor(x => x.Item.FormType,Model.Item.FormTypeSelectListItem)%>,並且我已經更改了屬性以讓iEnumerable – Akila

+0

I能夠解決這個使用[公共類BoundEnum \t { \t \t列表 listOfValues; \t \t public Dictionary ValueDictionary {get;私人設置; } \t \t公共BoundEnum() \t \t { \t \t \t初始化(); \t \t} \t \t私人無效初始化() \t \t { \t \t \t this.ValueDictionary =新詞典(); \t \t \t的foreach(在(T [])Enum.GetValues t值(typeof運算(T))) \t \t \t { \t \t \t \t ValueDictionary.Add(值,Helpers.ItemHelper。GetEnumDescription(值爲Enum)); \t \t \t} \t \t} \t}] – Akila

+0

對不起我新我發佈的代碼以上,現在,我在view'已經使用<%= Html.DropDownListFor(X => x.Item.FormType,新的SelectList( \t \t \t \t \t \t \t \t新BoundEnum ()。ValueDictionary, \t \t \t \t \t \t \t \t 「鍵」, \t \t \t \t \t \t \t \t 「值」, \t \t \t \t \t \t \t \t Model.Item.FormType))%>' – Akila