Переместить выбранные элементы из listbox1 в listbox2, проблема для сохранения в БД - PullRequest
0 голосов
/ 01 февраля 2019

У меня большая проблема.Сейчас я использую два списка, первый из которых содержит всех пользователей из базы данных.Второй список сможет хранить выбранных пользователей.Идея в том, что я собираюсь создать собрание и пригласить определенных пользователей, которые будут вставлены в таблицу, на конкретное собрание.

Я схожу с ума по этому поводу, я не могу заставить его работать.У кого-то есть простое решение, чтобы сделать это?Прямо сейчас я использую две кнопки для добавления / удаления, чтобы переместить элементы из списка1 в список2.

Я отправляю код, который у меня есть в контроллере, и просматриваю .. Проблема в том, что я получаю этот код ошибки "System.NullReferenceException: 'Ссылка на объект не была указана для экземпляра объекта."

Как правильно отправить данные Listbox обратно на контроллер, чтобы я смог сохранить их в БД?

    <div class="form-group">
        @Html.Label("Users", new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.ListBox("Users", ViewData["Users"] as 
 List<SelectListItem>, 
     new { @class = "form-control", id = "usersLb" })
            <input class="btn btn-default" type="button" name="+" 
 id="add" 
     value="+" />
            <input class="btn btn-default" type="button" name="-" 
 id="remove" 
     value="-" />
        </div>
     </div>

     <div class="form-group">
        @Html.Label("Users", new { @class = "col-md-2 control-label" })
        <div class="col-md-10">
            @Html.ListBox("SelectedUsers", ViewData["SelectedUsers"] as 
     List<SelectListItem>, new { @class = "form-control", id = 
     "selectedUsersLb" 
     })
        </div>
     </div>  


------------------------------------------------------------
      <script>
      $(function () {
        $(document)
            .on("click", "#add", function () {
                $("#usersLb 
     :selected").remove().appendTo("#selectedUsersLb");
                var selected = $("usersLb :selected").text();
                $.post("SelectedUserList", "Meeting", selected);
            })
            .on("click", "#remove", function () {
                $("#selectedUsersLb 
     :selected").remove().appendTo("#usersLb");
            });
      });
      </script>

-------------------------------------------------------------------

       public class MeetingController : Controller
      {
        // GET: Meeting
        public ActionResult Meeting()
        {
            ListUsers();
            ViewData["SelectedUsers"] = new List<SelectListItem>();
            return View();
        }

        public void ListUsers()
        {
            var ctx = new OruBloggenDbContext();
            List<SelectListItem> userList = new List<SelectListItem>();
            foreach (var item in ctx.Users)
            {
                userList.Add(new SelectListItem() { Text = 
  item.UserFirstname 
      + 
      " " + item.UserLastname, Value = item.UserID });
            }
            ViewData["Users"] = userList;
        }

        [HttpPost]
        public ActionResult CreateMeeting(MeetingModel model)
        {
            var ctx = new OruBloggenDbContext();

            ctx.Meetings.Add(new MeetingModel
            {
                MeetingTitle = model.MeetingTitle,
                MeetingDesc = model.MeetingDesc,
                MeetingStartDate = model.MeetingStartDate,
                MeetingEndDate = model.MeetingEndDate,
                MeetingUserID = User.Identity.GetUserId()
            });

            ctx.SaveChanges();

            foreach(var item in ViewData["SelectedUsers"] as 
      List<SelectListItem>) {
                ctx.UserMeetings.Add(new UserMeetingModel
                {
                    MeetingID = ctx.Meetings.Last().MeetingID,
                    UserID = item.Value
                });
            };

            ctx.SaveChanges();

            return RedirectToAction("Meeting");
        }
     }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...