【问题标题】:There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key Id没有具有键 Id 的“IEnumerable<SelectListItem>”类型的 ViewData 项
【发布时间】:2020-08-20 23:59:53
【问题描述】:

我正在尝试在我的 MVC 项目中使用 Dropdownlist,但出现此错误:

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

我的控制器是

public ActionResult Register()
    {

        ViewData["CourseId"] = new SelectList(reg.tbl_Course, "Id", "Course");

        return View();
    }

    [HttpPost]
    public ActionResult Register( tbl_User user)
    {
        reg.tbl_User.Add(user);
        reg.SaveChanges();
        return View();
    }

我在我的视图中将此代码用于 Dropdownlist

@Html.DropDownList("CourseId",null , htmlAttributes: new { @class = "form-control" })

我使用 ViewBag 和 ViewData ,但我看到了同样的错误。 请帮帮我

【问题讨论】:

  • 你的对象reg.tbl_Course看起来怎么样?
  • 我有一个数据库,其中包含两个表,表课程和表用户。 course 包含两列 id 和 course 和 table user 有 name 和 family 以及 idcourse 是外键
  • @hamed 这还不够,能否请您添加reg.tbl_Course 类和属性?

标签: c# asp.net asp.net-mvc visual-studio html.dropdownlistfor


【解决方案1】:

假设一个模型看起来像:

public class CourseViewModel
{
    public int Id { get; set; }
    public string Course { get; set; }
}

在您的控制器中:

[HttpGet]
public ActionResult Index()
{
    var listOfCourses = new List<CourseViewModel>()
    {
        new CourseViewModel() {Id = 1, Course = "Course Name 1"},
        new CourseViewModel() {Id = 2, Course = "Course Name 2"},
    };

    ViewData["CourseId"] = new SelectList(listOfCourses, "Id", "Course");

    return View();
}

在你.cshtml 中只需使用:

@Html.DropDownList("CourseId")

结果:

【讨论】:

  • 那么您需要提供更多信息。像堆栈跟踪这样的东西会很有帮助
【解决方案2】:

我认为您的错误表明视图数据需要为IEnumerable&lt;SelectListItem&gt;

在控制器中尝试类似的东西:

ApplicationDbContext db = new ApplicationDbContext();//gets db context
List<SelectListItem> users = new List<SelectListItem>();//creating list of select list items
var userList = db.Users.ToList();//geting list of users
foreach (var user in userList)
{
    users.Add(new SelectListItem() { Value = user.Id, Text = user.UserName});//populating select list with items
}
ViewData.Add("ApplicationUserId",users.AsEnumerable());//adding list to view data
return View();

在视图中:

@Html.DropDownListFor(model => model.ApplicationUserId, null, htmlAttributes: new { @class = "form-control" })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2020-06-28
    • 2011-02-20
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多