ASP.NET CORE MVC SelectList из коллекции объектов

Несмотря на то, что jCuga предоставил очень полезное объяснение, я все еще не мог настроить настроенную настройку. Редактор TinyMCE загрузится, но с настройками по умолчанию. Похоже, что у других есть аналогичная проблема, которая регистрируется как вопрос № 158 для проекта директивы ui-tinymce. Основная проблема для меня, похоже, в том, что, поскольку я определил параметры установки в угловом контроллере, как предлагает документация, переменная tinymceOptions по умолчанию никогда не перезаписывается, потому что мой контроллер никогда не загружается. Я решил это просто ссылкой на контроллер как таковой:


Как только я добавил ссылку на ng-controller, мои пользовательские настройки были использованы вместо настроек по умолчанию.

1
задан Codrin Muntean 16 January 2019 в 19:20
поделиться

4 ответа

"Teacher" - сложный класс, который всегда будет нулевым, я думаю, вы запутались, замените "Teacher" на "teacherID". EF сделает работу.

0
ответ дан karritos 16 January 2019 в 19:20
поделиться

Внесите следующие изменения

Создайте http get метод, просмотрите SelectList Class , установите ID в dataValueField из selectList и установите FullName в dataTextField из selectList

 public IActionResult Create()
    {
        var teachers = from s in _context.Teacher
                       where s.Class == null
                       select s;

        ViewData["Teachers"] = new SelectList(teachers.ToList(),"ID","FullName");
        return View();
    }

Тег выбора в виде

<select asp-for="TeacherID" class="form-control" asp-items="ViewBag.Teachers"></select>
0
ответ дан Xueli Chen 16 January 2019 в 19:20
поделиться

Список выбора будет возвращать только примитивный тип (string, int и т. Д.), А не весь экземпляр класса. В результате вам нужно будет связать значение со свойством, которое также является таким примитивным типом. Поскольку у вас уже есть свойство TeacherID, вы можете просто использовать его. При сохранении EF исправит ссылку Teacher с соответствующим идентификатором.

<select asp-for="TeacherID" class ="form-control" asp-items="ViewBag.Teachers"></select>
0
ответ дан Chris Pratt 16 January 2019 в 19:20
поделиться

Сначала обновите ваш метод Create GET следующим образом:

public async Task<IActionResult> Create()
{
    var teachers = await _context.Teachers.Where(t => t.Class == null).ToListAsync();
    ViewData["Teachers"] = new SelectList(teachers,"ID","FullName");
    return View();
}

Затем напишите свой FormGroup для select list следующим образом:

<div class="form-group">
     <label asp-for="TeacherID" class="control-label">Teacher</label>
     <select asp-for="TeacherID" class ="form-control" asp-items="ViewBag.Teachers">
     </select>
     <span asp-validation-for="TeacherID" class="text-danger"></span>
</div>

Теперь обновите свой Create POST метод следующим образом:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Class @class)
{
    if (ModelState.IsValid)
    {
        _context.Classes.Add(@class); // now your @class is containing the `TeacheID` value selected from drop-down.
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }
    return View("Index");
}

Теперь все должно работать нормально!

0
ответ дан TanvirArjel 16 January 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: