Импорт данных из базы данных в раскрывающийся список на мой взгляд, используя ASP. NET MVC5 - PullRequest
0 голосов
/ 19 января 2020

Мне нужно взять данные из моей базы данных и показать их в раскрывающемся списке на моей веб-странице: возвращенные данные будут иметь два параметра: DisciplineID и DisciplaneName.

Все работает правильно до контроллера. Он возвращает правильные данные, но нуждается в помощи о том, как правильно переместить данные в представление.

Вот разбивка моего проекта с использованием MVC5:

Класс модели:

public class Discipline
{
    public int DisciplineID { get; set; }
    public string DisciplineName { get; set; }
}

Реализация класса модели:

    public class DisciplineModel : IDiscipline
    {
            private List<Discipline> disciplinesList = new List<Discipline>();

            public IEnumerable<Discipline> disciplines()
            {
                LoadDisciplines(); //populates disciplinesList from database
                return disciplinesList;

            }
    }

Контроллер:

[HttpGet]
    public ActionResult EditDiscipline()
    {
        var disciplinesList = _idiscipline.disciplines();
        return View(disciplinesList);
    }

Данные переносятся сюда, но необходимо переместить эти данные в представление.

Просмотр:

@model OnlineTestingSystem.Models.Discipline
<div class="container">
    @using (Html.BeginForm("EditDiscipline", "Discipline", FormMethod.Post))
    {

        <div class="form-group">
            @Html.LabelFor(a => a.DisciplineName, "Discipline Name")
            @Html.DropDownListFor(a => a.DisciplineID, Model.disciplines,"Selected")
        </div>
        <input class="btn btn-primary" type="submit" />
    }
    @ViewBag.message
</div>

Мне нужно добавить данные, возвращенные из выпадающего списка, чтобы показать идентификаторы DisciplineID. Итак, как мне изменить мои разные классы для достижения этой цели?

Синтаксис строки ниже неправильный, я просто хотел показать, что это то, что я пытаюсь сделать.

@Html.DropDownListFor(a => a.DisciplineID, Model.disciplines,"Selected")

Заранее спасибо.

1 Ответ

1 голос
/ 19 января 2020

Сначала необходимо создать ViewModel, которая содержит список и выбранные id этого списка:

public class DisciplineViewModel
{

    public int? DisciplineId {get; set;}
    public List<Discipline> DisciplineList  {get ; set;}
}

, а затем инициализировать эту модель представления в контроллере:

[HttpGet]
public ActionResult EditDiscipline()
{
    var disciplinesList = _idiscipline.disciplines();
    var vm = new DisciplineViewModel
     {
           DisciplineList  = disciplinesList;
     }
    return View(vm);
}

затем в поле зрения:

 @model OnlineTestingSystem.Models.DisciplineViewModel
 <div class="container">
 @using (Html.BeginForm("EditDiscipline", "Discipline", FormMethod.Post))
 {

    <div class="form-group">
        @Html.LabelFor(m => m.DisciplineList)
        @Html.DropDownListFor(m => m.DisciplineId, new SelectList(Model.DisciplineList , "DisciplineID ", "DisciplineName "),  "Select..." )
    </div>
    <input class="btn btn-primary" type="submit" />
 }
@ViewBag.message

...