首页 > 解决方案 > 将所选项目从 listbox1 移动到 listbox2,保存到 db 的问题

问题描述

我有一个大问题。现在我正在使用两个列表框,第一个包含数据库中的所有用户。第二个列表框将能够存储选定的用户。这个想法是我要创建一个会议,并邀请将插入表格中的特定用户参加特定会议。

我为此发疯,我无法让它工作。有人有一个简单的解决方案来做到这一点?现在我正在使用两个按钮来添加/删除以将项目从 listbox1 移动到 listbox2。

我正在发送控制器和视图中的代码。问题是我收到此错误代码“System.NullReferenceException:'对象引用尚未指定给对象的实例。”

如何以正确的方式将列表框数据发送回控制器,以便我能够将其存储在数据库中?

    <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");
        }
     }
     }

标签: c#model-view-controller

解决方案


推荐阅读