2013-12-18 48 views
0

我正在使用EF 5Code First來處理ASP.NET MVC4應用程序。我的一個實體,是這樣的:如何根據Enum的整數值設置Enum的類型爲Enum

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")}) 

所以當我在我的控制器模型哪能實際設置基礎上,從SelectedValue在ViewModel的Page類型:

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

回答

2

這看似簡單:

var enumValue = (EnumType)integer; 

所以你的情況,從下拉菜單中選擇的值將是一個string,所以首先你需要int.Parse它爲整數,然後做你的按照上述方法投入到您的財產分配中。

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

不錯,簡單。謝謝。我用這個'Type =(PageTypes)Convert.ToInt32(model [i] .SelectedValue)'你怎麼找到它? – Leron

+0

是的,這將工作!您可能希望將其分解爲變量以使其更易於調試。你說'Tomayto',我說'Tomarto';你說'Convert.ToInt32',我說'int.TryParse' - 同樣的結果:) –