我正在尝试在我的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,但是我看到相同的错误。请帮我
假设模型看起来像:
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")
结果:
我认为您的错误表明查看数据必须为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" })