2015-02-06 3 views
1

Когда я пытаюсь сохранить тип перечисления из dropdownList в базу данных, а сохраненное значение имеет значение null, используя первый код. Может кто-то мне помочь, пожалуйста?Сохранение типа перечисления в базу данных возвращает 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

И что это ваша проблема тогда? –

+0

Anyuthing, который я выбираю из раскрывающегося списка, - это нулевое значение –

+0

Вы уверены, что значение типа пользователя заполняется при обратной передаче? Покажите нам свое мнение? – DavidG

ответ

1

Ваше мнение код неверен. Вы присваиваете раскрывающийся список UserId вместо соответствующего свойства типа пользователя. Например:

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

Спасибо, что он работает сейчас! :) –

+1

Если вы хотите связать с enum, тогда создайте свойство 'UserTypeId' typeof' UserType', а затем выберите новый SelectListItem {Text = user.ToString(), Value = user.ToString()}; '- ModelBinder' позаботится обо всем остальном. –

0

Если вы используете ASP.NET MVC 5.1 или выше, вы можете использовать:

@Html.EnumDropDownListFor(model => model.YOURENUM) 
Смежные вопросы