如何根据Enum的整数值设置哪个类型为Enum的属性

时间:2013-12-18 09:37:11

标签: c# asp.net-mvc-4 enums

我正在使用ASP.NET MVC4EF 5处理Code First申请。我的一个实体看起来像这样:

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; }
}

在我的视图中我有dropDown这些值是硬编码的(取自viewmodel):

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中的Page实际设置SelectedValue类型:

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

1 个答案:

答案 0 :(得分:2)

这看似简单:

var enumValue = (EnumType)integer;

因此,在您的情况下,下拉列表中的所选值将为string,因此首先您需要int.Parse它为整数,然后执行上面的转换以将其放入你的财产分配。

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