2015-02-06 154 views
1

當我嘗試將枚舉類型從dropdownList保存到數據庫中並且保存的值爲空時,首先使用代碼。有人能幫助我嗎?將枚舉類型保存到數據庫中返回null mvc

我的控制器:

public ActionResult Index() 
{ 
    return View(db.Users.ToList()); 
} 

public ActionResult Create() 
{ 
    User model = new User(); 
    IEnumerable<Proov.Models.User.UserType> userTypes = Enum 
    .GetValues(typeof(Proov.Models.User.UserType)) 
    .Cast<Proov.Models.User.UserType>(); 
    model.TypeList = from user in userTypes 
        select new SelectListItem 
        { 
        Text = user.ToString(), 
        Value = ((int)user).ToString() 
        }; 
    return View(model); 
} 

[HttpPost] 
public ActionResult Create(User user) 
{ 
    if (ModelState.IsValid) 
    {  
    db.Users.Add(user); 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
    } 
    return View(user); 
} 

查看

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    <label>Set a type for your user :</label><br /> 
    @Html.DropDownListFor(model=>model.UserId, Model.TypeList) 
    <p> 
    <input type="submit" value="Create" /> 
    </p> 
} 
+0

和你有什麼問題呢? – 2015-02-06 13:04:45

+0

我從下拉列表中選擇的Anyuthing是一個空值 – 2015-02-06 13:05:52

+0

您確定用戶類型值是在回發中填充的嗎?向我們展示你的觀點? – DavidG 2015-02-06 13:06:31

回答

1

您的視圖代碼不正確。您正在將下拉列表分配給UserId而不是相應的用戶類型屬性。例如:

@Html.DropDownListFor(model=>model.UserTypeId, Model.TypeList) 
<p> 
    <input type="submit" value="Create" /> 
</p> 
+0

謝謝你現在的作品! :) – 2015-02-06 13:13:31

+1

如果你想綁定到一個枚舉,然後使屬性'UserTypeId' typeof'UserType'然後'選擇新的SelectListItem {Text = user.ToString(),Value = user.ToString()};'' ModelBinder'會照顧其餘的。 – 2015-02-09 05:51:31

0

如果您使用ASP.NET MVC 5.1或更高版本可以使用:

@Html.EnumDropDownListFor(model => model.YOURENUM)