所以,我有一个包含团队成员列表的模型。这些团队成员中的每一个都有一个与该成员相关的期刊列表。这些期刊都有与我们相关的状态,我使用枚举。
public enum DailyEntryStatus
{
[Description("NA")]
NA,
[Description("Void")]
Void,
[Description("Submitted")]
Submitted,
[Description("Rejected")]
Rejected,
[Description("Approved")]
Approved
};
我的问题是,我在模型中的团队成员日记列表中查看了我对每个日记的观点。我能够使用枚举值填充下拉列表,但我希望在下拉列表中选择当前状态。
@Html.DropDownList("StatusFilter", EnumSelectListExtensions.DailyEntryStatusList(oEntry.Status), new { @class = "input-medium" })
我正在使用扩展方法DailyEntryStatusList(枚举状态)来填充以枚举状态为参数的列表。 (oEntry.Status是循环中的当前日志状态)
public static class EnumSelectListExtensions
{
public static IEnumerable<SelectListItem> DailyEntryStatusList(DailyEntryStatus eStatus)
{
var oList = from Enum e in Enum.GetValues(typeof (DailyEntryStatus))
select new {Value = e.ToString(), Name = e.ToString()};
return new SelectList(oList, "Value", "Name", eStatus.ToString());
}
}
我已经尝试了几种方法让它在没有运气的情况下工作,也许我只是以错误的方式去做。非常感谢帮助。
答案 0 :(得分:0)
我的预感是你正在实例化一个匿名对象,它希望列表有IEnumerable<SelectListItem>
。
select new SelectListItem {Value = e.ToString(), Name = e.ToString()};
答案 1 :(得分:0)
我不确定你所做的是什么问题,但试试这个。
public static class EnumSelectListExtensions
{
public static SelectList DailyEntryStatusList(DailyEntryStatus eStatus)
{
return new SelectList(Enum.GetNames(typeof(DailyEntryStatus)), eStatus.ToString());
}
}
我做了两件事。将返回类型更改为SelectList而不是SelectListItems的通用列表。另一件事是我简化了如何将枚举值加载到列表中。如果有效,请告诉我。
唯一的问题是您没有指定它们显示的顺序,但您可以根据需要进行更改。
答案 2 :(得分:0)
总愚蠢的时刻。一切都很好,它在jQuery中被改变了。实际上已将扩展方法更改为仅使用实际枚举状态来生成列表
public static SelectList ToSelectList<TEnum>(this TEnum enumObj) where TEnum : struct, IComparable, IFormattable, IConvertible
{
var values = from TEnum e in Enum.GetValues(typeof(TEnum))
select new { Id = e, Name = e.ToString() };
return new SelectList(values, "Id", "Name", enumObj);
}