【问题标题】:The ViewData item that has the key 'MaritalStatus' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>' [duplicate]具有键“MaritalStatus”的 ViewData 项属于“System.String”类型,但必须属于“IEnumerable<SelectListItem>”类型 [重复]
【发布时间】:2013-01-19 23:39:59
【问题描述】:

我正在从内存数据中填充DropDownList,并在 POST 上收到此错误。

错误:具有键“MaritalStatus”的 ViewData 项属于“System.String”类型,但必须属于“IEnumerable”类型。

控制器:-

// 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);
}

查看:-

<div class="editor-label">
    @Html.LabelFor(model => model.MaritalStatus)
</div>
<div class="editor-field">
    @Html.DropDownList("MaritalStatus")
    @Html.ValidationMessageFor(model => model.MaritalStatus)
</div>

模型属性:-

[DisplayName("Marital Status")]
public string MaritalStatus { get; set; }

感谢任何帮助。

【问题讨论】:

  • @stephen 你怎么说这是重复的?这个问题是 3 年前提出的,而您引用的原始问题是 6 个月前提出的。
  • 这没什么区别。它为遇到此问题的用户提供了一个替代答案(这是一个社区 wiki,并深入解释了问题所在)
  • 标记重复问题的全部目的是告诉每个人忽略它,以便他们可以更好地利用他们的时间。这是专家在这里解释的meta.stackoverflow.com/questions/260607/…。因此,从技术上讲,您应该将较新的问题标记为重复。
  • 您说“它为遇到此问题的用户提供了一个替代答案(这是一个社区 wiki,并深入解释了问题所在)”我个人在右侧看到一个相关问题列表使用它作为替代方案。如果我看到重复,我不重视这个问题。
  • 什么?这个网站上有数百个被标记为重复的好问题。将您的问题标记为重复并不意味着这是一个糟糕的问题。

标签: asp.net-mvc razor


【解决方案1】:

好吧,我通过在 POST 操作中重新填充 List 解决了这个问题,这是完整的工作代码。

    //
    // 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);
    }

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 2015-09-18
    • 2012-05-23
    • 2018-07-24
    • 1970-01-01
    • 2016-03-25
    • 2016-03-21
    • 2014-11-13
    相关资源
    最近更新 更多