プロジェクトの一部としてASP .NET Webアプリケーションチュートリアルを実行していますが、エラーメッセージが表示されていますこの投稿のタイトル'SelectedDepartment'というキーを持つ 'IEnumerable <SelectListItem>'タイプのViewDataアイテムはありません
[コース]ページでドロップダウンメニューを表示して、コースの部門を選択しようとしています。私はGenericRepositoryとUnitOfWorkのクラスで作業を開始する前に
それは罰金働いていました。私はこのコードを私のViews/Course/Index.cshtmlにコメントしなければなりません。
@using (Html.BeginForm())
{
@*<p>
Select Department: @Html.DropDownList("SelectedDepartment", "All")
<input type="submit" value="Filter" />
</p>*@
}
今、私はチュートリアルに従ってViewResult Indexコードを持っています。
public ViewResult Index()
{
var courses = unitOfWork.CourseRepository.Get(includeProperties: "Department");
return View(courses.ToList());
}
そして私は、私は変更することが必要になる場合がありPopulateDepartmentsDropDownList方法を、持っているが、私はそれで遊んでてきた私のCourseControllerでリポジトリ
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());
}
を行う前に、こののActionResult Indexメソッドを持っていましたこれまでのところ成功していません。
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);
}
この問題を解決するためのヒントをお願いします。
このビューのアクションメソッドを投稿できますか? 'Index ActionResult'具体的には –
私はActionResultの代わりにIndexメソッドのViewResultを持っています。 – Truecolor
だから、ViewResultは 'ViewBag.DepartmentID'を宣言しています –