Несмотря на то, что jCuga предоставил очень полезное объяснение, я все еще не мог настроить настроенную настройку. Редактор TinyMCE загрузится, но с настройками по умолчанию. Похоже, что у других есть аналогичная проблема, которая регистрируется как вопрос № 158 для проекта директивы ui-tinymce. Основная проблема для меня, похоже, в том, что, поскольку я определил параметры установки в угловом контроллере, как предлагает документация, переменная tinymceOptions по умолчанию никогда не перезаписывается, потому что мой контроллер никогда не загружается. Я решил это просто ссылкой на контроллер как таковой:
Как только я добавил ссылку на ng-controller, мои пользовательские настройки были использованы вместо настроек по умолчанию.
"Teacher"
- сложный класс, который всегда будет нулевым, я думаю, вы запутались, замените "Teacher"
на "teacherID"
. EF сделает работу.
Внесите следующие изменения
Создайте 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>
Список выбора будет возвращать только примитивный тип (string, int и т. Д.), А не весь экземпляр класса. В результате вам нужно будет связать значение со свойством, которое также является таким примитивным типом. Поскольку у вас уже есть свойство TeacherID
, вы можете просто использовать его. При сохранении EF исправит ссылку Teacher
с соответствующим идентификатором.
<select asp-for="TeacherID" class ="form-control" asp-items="ViewBag.Teachers"></select>
Сначала обновите ваш метод 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");
}
Теперь все должно работать нормально!