SelectList selectedValue不起作用

时间:2016-02-29 19:52:25

标签: c# .net model-view-controller enums extension-methods

我写了一个扩展方法来读取视图中的枚举器值,并返回Select的HTML以及所有枚举器值和选中的加载控制器。

我将其称为:

@Html.DropDownListFor(m => m.ItemType, Model.ItemTypeList)

在我的模特中:

public IEnumerable<SelectListItem> ItemTypeList { get; set; }

在我的控制器中:

model.ItemTypeList = typeof(ItemTypeToSell).ToLocalizatedSelectList();

另外,我的后端exension方法是:

public static IEnumerable<SelectListItem> ToLocalizatedSelectList(this Type enumType)
    {
        return (from object item in Enum.GetValues(enumType)
                let title = item.GetDescription()
                let value = ((int)item).ToString(CultureInfo.InvariantCulture)
                select new SelectListItem
                {
                    Value = value,
                    Text = title
                }).ToList();
    }

这是我正在使用的枚举器的一个例子:

public enum ItemTypeToSell
{
    [LocalizedDescription("Product", typeof(Expressions))]
    Product = 1,

    [LocalizedDescription("Addon", typeof(Expressions))]
    Addon = 2,

    [LocalizedDescription("Other", typeof(Expressions))]
    Other = 3
}

我将列表列表中的所有枚举值返回,并使用此代码在选择中显示它们。我能够在数据库中提供所选的值。但问题是,当页面加载时,它不会显示所选值,即使方法ToLocalizatedSelectList返回可以在可发消息列表中选择的项目,也会显示第一个值。

我需要做一些事情,或者我的错误是关于其他事情吗?

--------- 编辑 -----------

我是如何解决问题的:

我使用enumName作为值更改了ToLocalizatedSelectList(此类型enumType)中enum itens的值。当我将其转换为int时,代码会将值保存在数据库中,但代码不会将其视为选定值。

纠正方法:

public static IEnumerable<SelectListItem> ToLocalizatedSelectList(this Type enumType)
    {
        return (from object item in Enum.GetValues(enumType)
                let title = item.GetDescription()
                let value = item.ToString()
                select new SelectListItem
                {
                    Value = value,
                    Text = title
                }).ToList();
    }

0 个答案:

没有答案