我正在使用ASP.NET MVC4
和EF 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 = ???? }
答案 0 :(得分:2)
这看似简单:
var enumValue = (EnumType)integer;
因此,在您的情况下,下拉列表中的所选值将为string
,因此首先您需要int.Parse
它为整数,然后执行上面的转换以将其放入你的财产分配。
new Page { Type = (PageTypes)integerFromDropDown, ... }