Ich mache das ASP.NET-Webanwendungs-Tutorial als Teil eines Projekts, und ich bekomme eine Fehlermeldung als Titel von diesem PostEs gibt kein ViewData-Element vom Typ 'IEnumerable <SelectListItem>' mit dem Schlüssel 'SelectedDepartment'
ich versuche, eine Dropdown-Menü in den Kursen Seite zu zeigen, eine Abteilung für den Kurs ausgewählt auszuwählen.
Es funktioniert gut, bevor ich mit GenericRepository und UnitofWork Klassen zu arbeiten begann. Ich muss diesen Code kommentieren Sie unten in meinem Views/Kurs/Index.cshtml, um die Kurse Seite selbst zu arbeiten.
@using (Html.BeginForm())
{
@*<p>
Select Department: @Html.DropDownList("SelectedDepartment", "All")
<input type="submit" value="Filter" />
</p>*@
}
Momentan habe ich einen ViewResult Index Code wie im Tutorial.
public ViewResult Index()
{
var courses = unitOfWork.CourseRepository.Get(includeProperties: "Department");
return View(courses.ToList());
}
Und ich hatte dieses Action Index-Methode, bevor Sie die Repositorys
public ActionResult Index(int? SelectedDepartment)
{
var departments = db.Departments.OrderBy(q => q.Name).ToList();
ViewBag.SelectedDepartment = new SelectList(departments, "DepartmentID", "Name", SelectedDepartment);
int departmentID = SelectedDepartment.GetValueOrDefault();
IQueryable<Course> courses = db.Courses
.Where(c => !SelectedDepartment.HasValue || c.DepartmentID == departmentID)
.OrderBy(d => d.CourseID)
.Include(d => d.Department);
//var sql = courses.ToString();
return View(courses.ToList());
}
In meinem CourseController tun ich eine PopulateDepartmentsDropDownList Methode haben, die sich ändern erforderlich sein kann, aber ich habe mit ihm gespielt, um, aber bisher kein Erfolg.
private void PopulateDepartmentsDropDownList(object selectedDepartment = null)
{
var departmentsQuery = unitOfWork.DepartmentRepository.Get(orderBy: q => q.OrderBy(d => d.Name));
ViewBag.DepartmentID = new SelectList(departmentsQuery, "DepartmentID", "Name", selectedDepartment);
}
Alle Tipps zur Behebung dieses Problems bitte.
Können Sie Ihre Aktionsmethode für diese Ansicht veröffentlichen? Das 'Index ActionResult' speziell –
Ich habe ein ViewResult für die Index-Methode anstelle von ActionResult. – Truecolor
Also in der ViewResult ist, wo Sie die 'ViewBag.DepartmentID' deklarieren –