列表以在检查列表框中显示枚举值

时间:2018-04-26 11:15:51

标签: c# asp.net-mvc list model-view-controller enums

在viewModel中,我为一年中的不同月份创建了一个枚举,并创建了一个类的属性。

 public class Lists
{

    public enum Months
    {
        Jan = 0,
        Feb = 1,
        Mar = 2,
        Apr = 3,
        May = 4,
        Jun = 5,
        Jul = 6,
        Aug = 7,
        Sep = 8,
        Oct = 9,
        Nov = 10,
        Dec = 11
    }
 public object Month { get; set; }
 public bool isChecked { get; set; }

在控制器中,我创建了一个对象列表,并尝试使用GetValues方法将月份名称添加到该列表中。

public class SchedulerController : Controller
{
    // GET: Scheduler
    [HttpGet]
    public ActionResult schedulerIndex()
    {
        List<Lists> lst = new List<Lists>();
lst.Add(new Lists { Month = Enum.GetValues(typeof(Lists.Months)), isChecked = false });

然后我创建了一个视图,我尝试添加一个核对表框。但是,当我尝试运行webapp时,复选框中显示的所有内容都是system.string []。

如何让它显示名称?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

Enum.GetNames(typeof(Lists.Months)).OfType<string>()
  .ForEach(m => lst.Add(new Lists { Month = m, isChecked = false });

答案 1 :(得分:0)

这解决了这个问题。我创建了一个foreach循环,将枚举的每个值添加到列表中。

        foreach (Lists.Months month in Enum.GetValues(typeof(Lists.Months)))
        {
            lst.Add(new Lists { Month = month, IsChecked = false });
        }