1

更新 1

我想填充一个listboxformvc 助手以在 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> 我如何将选定的项目传递给帮助者的列表框? 有没有办法通过 [DataMember] public ColumnFormattingDateFormats SelectedDate{ get; set; } 我的模型类中的属性将所选项目传递给助手?首先,我将传递 this.SelectedDate= ColumnFormattingDateFormats.FULLDATE; 给我的模型类中的默认构造函数......但由于某种原因,第一个参数model => model.SelectedDate有一些问题......抛出空异常......

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

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

我的大脑现在都炸了....任何方向有人吗??????

4

1 回答 1

1

怎么样:

Enum.GetValues(typeof(MyEnum))
.Cast<MyEnum>()
.Select(p => new SelectListItem()
                    {
                        Text = p.ToString(),
                        Value = ((int) p).ToString()
                    })
                .ToList();
于 2012-12-25T12:55:40.480 回答