带有集合问题的MVC DropDownListFor SelectedValue

时间:2011-08-23 16:15:26

标签: asp.net-mvc

First of All很抱歉发布相同的问题,因为有很多帖子已经可用。我尝试了所有可能的方法,最后除了发布相同的问题外,我还有其他选择。

我想将枚举绑定到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)) %>

什么都行不通,当我改为HTML.DropdownList并指定了名称时,它工作得很好,但我只想用dropdownlist绑定。

我甚至尝试在视图中添加不同的id,不同的名称,如

new{id="ddlformType",name="ddlformtype") 
没什么用的。有人可以帮我解决这个问题吗?

谢谢, 阿基拉

1 个答案:

答案 0 :(得分:0)

DropDownListFor正在为它的项目寻找IEnumerable<SelectListItem>。尝试将FormTypeSelectListItem传递给DropDownListFor方法代替FinalSelectList。您可能必须将模型属性强制转换为IEnumerable<SelectListItem>