【问题标题】:how to convert Enum to IEnumerable<SelectListItem>如何将 Enum 转换为 IEnumerable<SelectListItem>
【发布时间】:2012-12-25 12:39:59
【问题描述】:

更新 1

我想填充一个listboxfor mvc 助手以在视图中呈现列表项。我不知道如何将第二个参数传递给helper,它接受IENumerableSelectListItemSelectionList

 Html.ListBoxFor(model => model.SelectedDate, Model.DateList, new { })

我的模型类中有一个属性,

public IEnumerableSelectListItem  DateList { get; set; }

不知何故,我需要从我的控制器操作方法中填充 DateList,该方法会填充所有其他模型属性并将其传递给我有助手的局部视图。 DateList 应该从 Enum DateListEnum 中获取值

关于如何进行此操作的任何想法。还让我知道如何确保一次选择一个列表项......我对所有这些都很陌生......而且我已经有很长一段时间了......但到目前为止没有任何结果....

我的控制器操作方法中有以下代码,

model.DateList = getDateList();

调用这个方法,

public IEnumerableSelectListItem getDateList()

{

IEnumerableSelectListItem  values = Enum.GetValues(typeof(DateListEnum));

 //this one doesn't work because of casting issues and this is where i want to convert Enum Values to  IEnumerableSelectListItem

return values; 

 }

更新 2

我的列表框正在工作并根据以下代码在 UI 中显示

` IEnumerable<SelectListItem> values = Enum.GetNames(typeof(ColumnFormattingDateFormats)).Cast<ColumnFormattingDateFormats>().Select(p => new SelectListItem()
            {
                Text = p.ToString(),
                Value = ((int)p).ToString()
            }).ToList();`

但现在我遇到了一些其他问题,

我使用的枚举是

`public enum ColumnFormattingDateFormats : int 
{ 
[StringValue("Wednesday, March 14, 2001")]
 FULLDATE = 0, 
[StringValue("3/14")]
 MMDDWSLASH = 1,
 [StringValue("3/14/01")]
 MMDDYYWSLASH = 2,
 [StringValue("03/14/01")]
 MMDDYYWMMZEROPREFIXWSLASH = 3 
}`

我的助手看起来像这样,

Html.ListBoxFor(model =&gt; model.SelectedDate, Model.DateList, new { })

1>如何将选定的项目传递给帮助者的列表框? 有没有办法通过属性将所选项目传递给助手 [DataMember] public ColumnFormattingDateFormats SelectedDate{ get; set; } 在我的模特课上?首先我正在路过 this.SelectedDate= ColumnFormattingDateFormats.FULLDATE; 到我的模型类中的默认构造函数......但由于某种原因,第一个参数model =&gt; model.SelectedDate有一些问题......抛出空异常......

2> 我如何确保来自 Enum 的 [StringValue] 显示在 UI 列表框元素中,而不是前的 Enum Text 中。不应该显示 FULLDATE,而是应该显示“2001 年 3 月 14 日,星期三”?

3>如何确保在不使用 livequery 的情况下选择单个项目?

我的脑子现在都炸了....有什么方向吗?????

【问题讨论】:

    标签: asp.net-mvc-2 html-helper


    【解决方案1】:

    怎么样:

    Enum.GetValues(typeof(MyEnum))
    .Cast<MyEnum>()
    .Select(p => new SelectListItem()
                        {
                            Text = p.ToString(),
                            Value = ((int) p).ToString()
                        })
                    .ToList();
    

    【讨论】:

    • Cast&lt;My Enum&gt; 仍然抛出错误 is a method, which is not valid in the given context
    • 好的...现在解决了...但是还有一个问题,Value = (int)p无法将类型 int 隐式转换为字符串
    • 这是我的枚举,public enum ColumnFormattingDateFormats : int { [StringValue("Wednesday, March 14, 2001")] FULLDATE = 0, [StringValue("3/14")] MMDDWSLASH = 1, [StringValue("3/14/01")] MMDDYYWSLASH = 2, [StringValue("03/14/01")] MMDDYYWMMZEROPREFIXWSLASH = 3 } 如果这有帮助...
    • 抱歉更正了我的答案,我在一个编辑器中写了这个,然后在 VS 中进行了更改并复制了错误的一个:),希望对您有所帮助
    • 有没有办法将所选项目传递给我的模型类中属性[DataMember] public ColumnFormattingDateFormats SelectedDate{ get; set; } 中包含的帮助程序?首先,我将this.SelectedDate= ColumnFormattingDateFormats.FULLDATE; 传递给我的模型类中的默认构造函数......但由于某种原因,第一个参数model =&gt; model.SelectedDate 有一些问题......抛出空异常......
    猜你喜欢
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多