没有类型为“IEnumerable”的ViewData项具有键

时间:2017-01-22 15:25:07

标签: c# linq razor

我从Exception获得了以下View

  

发生了'System.InvalidOperationException'类型的异常   System.Web.Mvc.dll但未在用户代码中处理

     

其他信息:没有类型的ViewData项   “IEnumerable”具有键'Profile_Id'。

从视图

@Html.DropDownList("Profile_Id", String.Empty)

控制器

public ViewResult Index( string name, string Profile_Id, int? page)
{

    ...
    ViewBag.Profile_Id = new SelectList(db.PROFILE.Where(y => y.ID== myId ), "Profile_Id", "Name");

    return View(prof.ToPagedList(pageNumber, pageSize));
}

1 个答案:

答案 0 :(得分:2)

我认为在第一次从GET / Index操作呈现此视图时,您没有收到此错误,而是当您将相应的表单提交到呈现相同视图的POST操作时。

要修复此错误,请确保在POST操作中 ,您还要像在GET操作中一样填充Profile_Id属性,如果您打算渲染相同的视图,因为它依赖于它:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    ... process the data

    // populate the Profile_Id property because we are
    // redisplaying the same view which depends on it in order
    // to show the corresponding dropdown
    ViewBag.Profile_Id = new SelectList(db.PROFILE.Where(y => y.ID== myId ), "Profile_Id", "Name");

    return View(model);
}