如何根据枚举的整数值设置枚举类型

本文关键字:枚举 设置 类型 整数 何根 | 更新日期: 2024-10-31 17:25:43

我正在使用EF 5Code First开发ASP.NET MVC4应用程序。我的一个实体看起来像这样:

public enum PageTypes
{
    LinkPage = 10,
    FileListPage = 20,
    TableValuePage = 30
}
public class Page
{
    public int PageID { get; set; }
    public string Title { get; set; }
    public PageTypes Type { get; set; }
    public DateTime Date { get; set; }
}

在我看来,我有下拉列表,其中这些值是硬编码的(取自视图模型):

public class PagesViewModel
{
    public PageViewModel()
    {
        TypeOfPage = new List<ListItem> { 
                     new ListItem { Text = "LinkPage ", Value = "10" }, 
                     new ListItem { Text = "FileListPage ", Value = "20" },
                     new ListItem { Text = "TableValuePage ", Value = "30" } };
    }
    //some other properties
    public string SelectedValue { get; set; }
    public List<ListItem> TypeOfPage { get; set; }
}

以及视图中的实际可视化效果:

@Html.DropDownListFor(m => m[i].SelectedValue, new SelectList(Model[i].TypeOfPage, "Value", "Text")})

因此,当我在控制器中获取模型时,如何根据 ViewModel 中的SelectedValue实际设置Page类型:

new Page { //other properties.., Type = ???? }

如何根据枚举的整数值设置枚举类型

这看似简单:

var enumValue = (EnumType)integer;

因此,在您的情况下,下拉列表中的选定值将是一个 string ,因此首先您需要将其int.Parse为整数,然后按上述方式进行转换以将其放入属性分配中。

new Page { Type = (PageTypes)integerFromDropDown, ... }