Asp.net mvc 4 没有类型为';IEnumerable<;选择列表项>';那有钥匙';M#u类型';
这是我的控制器动作Asp.net mvc 4 没有类型为';IEnumerable<;选择列表项>';那有钥匙';M#u类型';,asp.net-mvc-4,Asp.net Mvc 4,这是我的控制器动作 [HttpGet] public ActionResult AddDrug() { UserDB db = new UserDB(); ViewData["MedType"] = new SelectList(db.mtype, "MID", "M_TYPE"); return View(); } 这是Post方法 [HttpPost] [ValidateAntiForgeryT
[HttpGet]
public ActionResult AddDrug()
{
UserDB db = new UserDB();
ViewData["MedType"] = new SelectList(db.mtype, "MID", "M_TYPE");
return View();
}
这是Post方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddDrug(Drug drug)
{
UserDB db = new UserDB();
if (ModelState.IsValid)
{
db.drugs.Add(drug);
db.SaveChanges();
ModelState.Clear();
TempData["AlertMessage"] = "Medicine Type Added Sucessfully";
return View();
}
return View(drug);
}
这是我的看法
<div class="editor-label">
@Html.LabelFor(model => model.M_TYPE)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.M_TYPE,ViewData["MedType"] as IEnumerable<SelectListItem>,"(none)")
@Html.ValidationMessageFor(model => model.M_TYPE)
</div>
@LabelFor(model=>model.M_类型)
@Html.DropDownListFor(model=>model.M_类型,ViewData[“MedType”]作为IEnumerable,“(无)”)
@Html.ValidationMessageFor(model=>model.M_类型)
现在我不想将数据从下拉列表插入数据库,但返回视图时会出现错误,需要重新分配
选择列表
,否则它将为空
,导致该异常(另请参见关于重定向的说明)
您需要重新分配
SelectList
,然后才能在POST方法中返回视图(其null
,这会导致该异常)的可能副本,然后接受此答案以及对您的问题的所有其他答案,如果您评论该答案有效!
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddDrug(Drug drug)
{
UserDB db = new UserDB();
if (ModelState.IsValid)
{
db.drugs.Add(drug);
db.SaveChanges();
// ModelState.Clear(); // don't do this!
TempData["AlertMessage"] = "Medicine Type Added Sucessfully";
// return View(); // don't do this!
return RedirectToAction("AddDrug"); // do this instead
}
ViewData["MedType"] = new SelectList(db.mtype, "MID", "M_TYPE"); // add this
return View(drug);
}