Я пытаюсь изучить MVC, создав полноценный веб-сайт. Я немного застрял, когда дело доходит до работы с формами, публикации данных и моделей ....
Кстати: я использую EF Code-First с MS SQL CE
Вот эти модели:
public class Assignment
{
public int AssignmentID { get; set; }
public int? CourseID { get; set; }
public string Name { get; set; }
// etc...
public virtual Course Course { get; set; }
}
public class Course
{
public int CourseID { get; set; }
// etc...
}
Я загружаю частичное представление, позволяющее пользователю добавить новое назначение
Контроллер:
public ActionResult Assignments()
{
var assignments = myContext.Assignments.OrderBy(x => x.DueDate);
return View(assignments);
}
[HttpPost]
public ActionResult AddAssignment(Assignment assignment)
{
myContext.Assignments.Add(assignment);
myContext.SaveChanges();
return RedirectToAction("Assignments");
}
// Returns a strongly-typed, partial view (type is Assignment)
public ActionResult AddAssignmentForm()
{
return PartialView();
}
Вот где я застрял: я хочу, чтобы в этой форме был раскрывающийся список для различных курсов, к которым может принадлежать задание. Например, задание под названием «Обзор главы 3, вопросы 1-77» может принадлежать курсу «Предварительная алгебра» . Однако, если я использую приведенный ниже код, я должен явно объявить SelectListItems. Я думал, что с данной моделью Назначения выше, у меня будет возможность иметь выпадающий список для курсов, автоматически генерируемых с использованием MVC awesomeness. Что я делаю не так?
Частичное представление AddAssignment:
@model MyModels.Assignment
@using(Html.BeginForm("AddAssignment", "Assignments"))
{
// Can't I create a drop down list without explicitly
// setting all of the SelectListItems?
@Html.DropDownListFor(x => x.Course, ....
}