Я создаю регистрационную форму ASP.NET MVC и использую раскрывающийся список в своей форме, но когда я нажимаю кнопку отправки в моем представлении, возникает эта ошибка:
System.InvalidOperationException: 'Нет элемента ViewData типа' IEnumerable ', который имеет ключ' IsWorkingID '.
Я пробовал разные методы, но ни один из них не работает.
Это моя модель:
[Required(ErrorMessage = "Field Required")]
[Display(Name = "Do you work in a medical practice?")]
public int IsWorkingID { get; set; }
Это мой контроллер:
public class UserController : Controller
{
// GET: User
public ActionResult Index()
{
try
{
MyDBEntities db = new MyDBEntities();
List<WorkingDetail> list = db.WorkingDetails.ToList();
ViewBag.WorkingDetail = new SelectList(list, "IsWorkingID", "IsWorking");
return View();
}
catch (InvalidOperationException exception)
{
throw exception;
}
}
[HttpPost]
public ActionResult SaveRecord(UserViewModel model)
{
if (!ModelState.IsValid)
{
return View("Index");
}
else
{
try
{
MyDBEntities db = new MyDBEntities();
User userObj = new User();
userObj.FirstName = model.FirstName;
userObj.LastName = model.LastName;
userObj.Email = model.Email;
userObj.PhoneNo = model.PhoneNo;
userObj.IsWorkingID = model.IsWorkingID;
db.Users.Add(userObj);
db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception ex)
{
throw ex;
}
}
}
}
Это мой взгляд:
@Html.LabelFor(model => model.IsWorkingID)
@Html.ValidationMessageFor(model => model.IsWorkingID, "", new { @class = "text-danger" })
@Html.DropDownListFor(model => model.IsWorkingID, ViewBag.WorkingDetail as SelectList, "", new { @class = "form-control" })
Когда я правильно заполняю форму, значения сохраняются в БД, но когда я оставляю любое поле пустым, ViewBag
возвращает нулевое значение.
Но он должен показать, что вместо поля * 1021 требуется сообщение об ошибке в поле формы.
InvalidOperationException - нет элемента ViewData типа 'IEnumerable', который имеет ключ 'IsWorkingID'