Нет элемента ViewData типа IEnumerable <SelectListItem>с идентификатором ключа - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь использовать Dropdownlist в своем проекте MVC, но возникает эта ошибка:

Нет элемента ViewData типа 'IEnumerable' с идентификатором ключа

Мой контроллер

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, но вижу ту же ошибку. пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Я думаю, ваша ошибка говорит о том, что данные просмотра должны быть 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" })
0 голосов
/ 06 мая 2020

Предполагая, что модель выглядит так:

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

...