@Nonna-t

Как вывести данные из таблицы (связь многие ко многим) в checkbox ASP Bootstrap?

Задача.
Есть база данных - две таблицы Обращения и Ответственные, связь многие ко многим.
Надо в окно редактирования Обращений вывести данные из Ответственных в виде checkbox так, чтобы те которые уже под это обращение выбраны были помещены галочкой, а остальные данные из таблицы Ответственные были доступны для отметки. После редактирования (снятия или добавления отметки) данные сохранялись в базу (Третья таблица ОбращенияОтветственные).
Проблема: Я совершенно не знакома с Bootstrap (а я так понимаю что пользоваться надо ним) и не знаю как все это реализовать. Попробовала сделать но в результате в виде checkbox выводятся только выбранные данные, а остальные просто списком и после нажатия Сохранить. Данные не то что не меняются, а полностью удаляются.
Подскажите как сделать правильно.
Ой, и сразу еще спрошу - поле дата не выводит данные из базы вместо этого стоит шаблон. Как это исправить?
Спасибо.

Модель:

public class Appeal
    {
        public int AppealId { get; set; }
        [Display(Name = "Номер")]
        public string Num { get; set; }
        [Display(Name = "Дата звернення")]
        [DataType(DataType.Date)]
        public DateTime Data { get; set; }
        [Display(Name = "ПІБ")]
        public string NameAp { get; set; }
        [Display(Name = "Адреса")]
        public string Address { get; set; }
        [Display(Name = "Питання")]
        public string Question { get; set; }
 
        public virtual ICollection<Responsible> Responsibles { get; set; }
        public Appeal()
        {
            Responsibles = new List<Responsible>();
        }
    }

Контроллер:

public ActionResult Edit(int id = 0)
        {
            Appeal appeal = db.Appeals.Find(id);
            if (appeal == null)
            {
                return HttpNotFound();
            }
            ViewBag.Responsibles = db.Responsibles.ToList();
            return View(appeal);
        }
 
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(Appeal appeal, int[] selectedResponsibles)
           
        {
            Appeal newAppeal = db.Appeals.Find(appeal.AppealId);
            newAppeal.Num = appeal.Num;
            newAppeal.Data = appeal.Data;
            newAppeal.NameAp = appeal.NameAp;
            newAppeal.Address = appeal.Address;
            newAppeal.Question = appeal.Question;
 
            newAppeal.Responsibles.Clear();
            if (selectedResponsibles != null)
            {
                foreach (var r in db.Responsibles.Where(ro => selectedResponsibles.Contains(ro.ResponsibleId)))
                {
                    newAppeal.Responsibles.Add(r);
                }
            }
            db.Entry(newAppeal).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
           
        }

представление Edit.cshtml(здесь и не получается):

<div class="form-group">
                @Html.LabelFor(model => model.Data, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Data, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Data, "", new { @class = "text-danger" })
                </div>
            </div>
<div class="form-group">
                @Html.LabelFor(model => model.Question, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-xl-12">
                    @Html.EditorFor(model => model.Question, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Question, "", new { @class = "text-danger" })
                </div>
            </div>
            <div class="form-group">
                <label class="control-label col-md-2">Відповідальні</label>
 
                @foreach (Responsible r in ViewBag.Responsibles)
                {
                    <div class="form-check">
                        <input class="form-check-input" type="checkbox" name="selectedCourses" value="@r.ResponsibleId"
                               @(Model.Responsibles.Contains(r) ? "checked=\"checked\"" : "") />@r.Name <br />
 
                        </div>
                    }
            </div>
 
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Зберегти" class="btn btn-default" />
                </div>
            </div>
        </div>
5e94ccdc1e617832512554.png
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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