没有类型为'IEnumerable '的具有键ID的ViewData项

问题描述 投票:0回答:2

我正在尝试在我的MVC项目中使用Dropdownlist,但是会发生此错误:

[没有类型为'IEnumerable'的具有ID的ViewData项,具有键ID

我的控制器是

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,但是我看到相同的错误。请帮我

c# asp.net asp.net-mvc visual-studio html.dropdownlistfor
2个回答
0
投票

假设模型看起来像:

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")

结果:

enter image description here


0
投票

我认为您的错误表明查看数据必须为IEnumerable<SelectListItem>

尝试在控制器中进行类似操作:

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" })
© www.soinside.com 2019 - 2024. All rights reserved.