如何将Enum转换为IEnumerable <selectlistitem> </selectlistitem>

时间:2012-12-25 12:39:59

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

更新1

我想填充一个listboxfor mvc帮助器来在View中呈现列表项。我不知道如何将第二个参数传递给助手,该助手接受IENumerableSelectListItem SelectionList

 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 => model.SelectedDate, Model.DateList, new { })

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

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

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

我的大脑现在都被炒了......任何方向任何人?????

1 个答案:

答案 0 :(得分:1)

怎么样:

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