Asp.net mvc 具有键“MaritalStatus”的ViewData项的类型为“System.String”,但必须为“IEnumerable”类型
我正在从内存中的数据填充DropDownList,并在POST中获得此错误 错误:具有键“MaritalStatus”的ViewData项的类型为“System.String”,但必须为“IEnumerable”类型 控制器:-Asp.net mvc 具有键“MaritalStatus”的ViewData项的类型为“System.String”,但必须为“IEnumerable”类型,asp.net-mvc,razor,Asp.net Mvc,Razor,我正在从内存中的数据填充DropDownList,并在POST中获得此错误 错误:具有键“MaritalStatus”的ViewData项的类型为“System.String”,但必须为“IEnumerable”类型 控制器:- // GET: /Application/Create public ActionResult Create() { List<SelectListItem> lst = new List<SelectListItem>(); l
// GET: /Application/Create
public ActionResult Create()
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "1" });
lst.Add(new SelectListItem { Text = "Married", Value = "2" });
lst.Add(new SelectListItem { Text = "Widow", Value = "3" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
return View();
}
// POST: /Application/Create
[HttpPost]
public ActionResult Create(ApplicationForm applicationform)
{
if (ModelState.IsValid)
{
db.ApplicationForms.Add(applicationform);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(applicationform);
}
非常感谢您的帮助。好吧,我通过在POST action中重新填充列表解决了这个问题,以下是完整的工作代码
//
// GET: /Application/Create
public ActionResult Create()
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "Unmarried" });
lst.Add(new SelectListItem { Text = "Married", Value = "Married" });
lst.Add(new SelectListItem { Text = "Widow", Value = "Widow" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
return View();
}
//
// POST: /Application/Create
[HttpPost]
public ActionResult Create(ApplicationForm applicationform)
{
if (ModelState.IsValid)
{
db.ApplicationForms.Add(applicationform);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "1" });
lst.Add(new SelectListItem { Text = "Married", Value = "2" });
lst.Add(new SelectListItem { Text = "Widow", Value = "3" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
}
return View(applicationform);
}
好吧,我通过在PostAction中重新填充列表解决了这个问题,下面是完整的工作代码
//
// GET: /Application/Create
public ActionResult Create()
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "Unmarried" });
lst.Add(new SelectListItem { Text = "Married", Value = "Married" });
lst.Add(new SelectListItem { Text = "Widow", Value = "Widow" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
return View();
}
//
// POST: /Application/Create
[HttpPost]
public ActionResult Create(ApplicationForm applicationform)
{
if (ModelState.IsValid)
{
db.ApplicationForms.Add(applicationform);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "1" });
lst.Add(new SelectListItem { Text = "Married", Value = "2" });
lst.Add(new SelectListItem { Text = "Widow", Value = "3" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
}
return View(applicationform);
}
@斯蒂芬,你怎么说这是重复的?这个问题是3年前提出来的,而你提到的原创问题是6个月前提出来的。这没什么区别。它为遇到这个问题的用户提供了一个备选答案,这是一个社区维基,并深入解释了问题的症结所在。将问题标记为重复问题的全部意义在于告诉每个人忽略它,以便他们能够更好地利用时间。这是一位专家在这里解释的。所以,从技术上讲,你应该将新问题标记为重复问题。你说它为遇到这个问题的用户提供了一个备选答案,这是一个社区wiki,并深入解释了问题所在。我看到右侧有一个相关的问题列表,我个人将此作为备选答案。如果我看到重复,我不重视这个问题。什么?这个网站上有数百个被标记为重复的重要问题。将你的问题标记为重复并不意味着这是一个糟糕的问题。@stephen你怎么说这是重复的?这个问题是3年前提出来的,而你提到的原创问题是6个月前提出来的。这没什么区别。它为遇到这个问题的用户提供了一个备选答案,这是一个社区维基,并深入解释了问题的症结所在。将问题标记为重复问题的全部意义在于告诉每个人忽略它,以便他们能够更好地利用时间。这是一位专家在这里解释的。所以,从技术上讲,你应该将新问题标记为重复问题。你说它为遇到这个问题的用户提供了一个备选答案,这是一个社区wiki,并深入解释了问题所在。我看到右侧有一个相关的问题列表,我个人将此作为备选答案。如果我看到重复,我不重视这个问题。什么?这个网站上有数百个被标记为重复的重要问题。将你的问题标记为重复问题并不意味着它是一个差劲的问题。
//
// GET: /Application/Create
public ActionResult Create()
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "Unmarried" });
lst.Add(new SelectListItem { Text = "Married", Value = "Married" });
lst.Add(new SelectListItem { Text = "Widow", Value = "Widow" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
return View();
}
//
// POST: /Application/Create
[HttpPost]
public ActionResult Create(ApplicationForm applicationform)
{
if (ModelState.IsValid)
{
db.ApplicationForms.Add(applicationform);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
List<SelectListItem> lst = new List<SelectListItem>();
lst.Add(new SelectListItem { Text = "Unmarried", Value = "1" });
lst.Add(new SelectListItem { Text = "Married", Value = "2" });
lst.Add(new SelectListItem { Text = "Widow", Value = "3" });
ViewBag.MaritalStatus = new SelectList(lst, "Value", "Text");
}
return View(applicationform);
}