没有具有键 "Projects" 的类型 'IEnumerable<SelectListItem>' 的 ViewData 项

There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key "Projects"

我是 MVC Razor 的新手。我正在尝试插入 de DB 但我得到了这个期望:

There is no ViewData item of type 'IEnumerable' that has the key "Projects"

我正在使用 EntityFramework(DB First)作为我的 MVC 模型。我在我的 DropDownList 中收到此错误,我使用 Linq 检索数据以填充我的 DropDwonList,这是我的代码:

控制器:

// GET: /Actividad/

public ActionResult AgregarActividad()
{
    var db = new WTMEntities();

    var proyectos = (from pro in db.Proyecto
                     select new
                     {
                         Id = pro.Id,
                         Nombre = pro.Nombre
                     }).ToList();
    ViewData["Projects"] = new SelectList(proyectos.Select(i => i.Nombre));

    return View();
}

[HttpPost]
public ActionResult AgregarActividad(Actividades act)
{
    if (ModelState.IsValid)
    {
        var db = new WTMEntities();

        var proyectos = (from pro in db.Proyecto
                         select new
                         {
                             Id = pro.Id,
                             Nombre = pro.Nombre
                         }).ToList();
        ViewData["Projects"] = new SelectList(proyectos.Select(i => i.Nombre));

        var actividad = db.Set<Actividades>();
        actividad.Add(act);
        db.SaveChanges();

        return View();
    }
    else
    {
        return View();
    }
}

查看

<div>
    <p>Proyecto</p>
    @Html.DropDownList(
    "Projects", null, string.Empty, new { style = "width: 200px;" })
</div>

如果有人能帮助我,我将不胜感激!!

您的 post 方法没有重新填充 ViewData。 我已经修改了您的代码...在下面找到。

[HttpPost]
public ActionResult AgregarActividad(Actividades act)
{
var db = new WTMEntities();

        var proyectos = (from pro in db.Proyecto
                         select new
                         {
                             Id = pro.Id,
                             Nombre = pro.Nombre
                         }).ToList();
        ViewData["Projects"] = new SelectList(proyectos.Select(i => i.Nombre));

    if (ModelState.IsValid)
    {
        var actividad = db.Set<Actividades>();
        actividad.Add(act);
        db.SaveChanges();

        return View();
    }
    else
    {
        return View();
    }
}