MVC DropDownList для и коллекции не из модели - PullRequest
0 голосов
/ 20 января 2012

У меня есть ученик класса , созданный из существующей базы данных Entity Framework (я ничего не создаю руками), как показано ниже:

public class student
{
   ...
   public int student_status { get; set; }
   ...
}

Также я связал (по свойству Navigation) коллекцию студенческих статусов, таких как:

public class student_status
{
    public int id { get; set; }
    public string status { get; set; }
}

Я использую строго типизированное представление (System.Web.Mvc.ViewUserControl ) и хочу отобразить выпадающий список со статусами студента и выбранным - существующим.

Примечание: учащийся itsels не содержит коллекцию всех статусов, то есть данные для списка не представлены в модели - я думал, что могу передать его с помощью ViewData.

Я пытался использовать Html.DropDownListFor (x => x.student_status, ViewData ["StudentStatuses"] как IEnumerable, htmlAttrs), но не удалось (ViewData ["StudentStatuses"] подготовлен в коллекции контроллеров).

Может быть, я могу сделать это, используя свойство навигации? Я пытался понять инструкцию .Include (), но не повезло.

Как я мог это сделать?

1 Ответ

1 голос
/ 20 января 2012

У вашей модели все в порядке. Я изменил орфографию / синтаксис в моем примере. Так что вам нужно будет настроить, если вы копируете и вставляете.

Вот методы действия:

      [HttpGet]
      public ActionResult Index()
            {
                StudentModel model = new StudentModel();
                List<StudentStatus> StatusList = new List<StudentStatus>();
                StatusList.Add(new StudentStatus { Id = 1, Name = "In School" });
                StatusList.Add(new StudentStatus { Id = 2, Name = "Out of School" });
                ViewData["StatusList"] = StatusList;
                return View(model);
            }

        [HttpPost]
        public ActionResult Index(StudentModel model)
        {
            return View();
        }

Вид:

  @Html.DropDownListFor(m => m.SelectedStatus, new SelectList(ViewData["StatusList"] as System.Collections.IEnumerable, "Id", "Name", @Model.SelectedStatus), "Select Status")

Модель:

public class StudentModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int SelectedStatus { get; set; }
}



   public class StudentStatus
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...