Вы поместили обязательные атрибуты в свойство Name
, но они никогда не отправляются на сервер, поэтому ваша модель недействительна (только Id
POSTed).Поэтому вы должны поместить его в свойство Id
:
public class Role
{
[Required(ErrorMessage = "Required.")]
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Также вы должны задать это свойство Id
Nullable
, так как вы определили пустое значение для раскрывающегося списка, а если пользователь этого не делаетвыберите любое значение, оно будет сбой.Итак, ваша модель должна выглядеть следующим образом:
public class Role
{
[Required(ErrorMessage = "Required.")]
public virtual int? Id { get; set; }
public virtual string Name { get; set; }
}
Также вы можете удалить атрибут Required из свойства Role в классе User.Это не нужно.
Последний совет и, возможно, самый важный: замените это ViewBag
уродство свойством на вашей модели представления, чтобы помощник выглядел следующим образом:
@Html.DropDownListFor(
model => model.Role.Id,
Model.Roles,
"-- Select --",
new { @class = "form radius" }
)