ASP.NET MVC Forms для модели - PullRequest
       3

ASP.NET MVC Forms для модели

0 голосов
/ 21 ноября 2011

Я пытаюсь изучить 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, ....
}

1 Ответ

1 голос
/ 21 ноября 2011

По сути, вы путаете / смешиваете свою бизнес-модель и модель UI.

Быстрое решение здесь - добавить данные для выпадающего списка в ViewBag (динамический объект).

В качестве альтернативы вы можете создать class AssignmentModel, который содержит соответствующие свойства Назначения и Список.

И нет, это не очень хорошо поддерживается в шаблонах.

Вы понимаете, что вам потребуется обработка ошибок в методах Post?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...