c# - 将所选项目从 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");
}
}
}
解决方案
推荐阅读
- logging - 我们应该登录同一个数据库还是单独的数据库
- laravel - 在 gitlab-ci 期间无法在 docker 中启动 MySQL 服务
- mysql - 使用通配符在两列中查找 MySQL 近似重复项
- python - 分解 with 语句
- azure - 无法将 docker 映像从 azure 注册表托管到 azure 批处理
- javascript - JointJS 端口不起作用
- sql-server - SQL 透视一列中具有多个属性名称且另一列中的另一行中具有多个值的行
- python - 如何对字符串和 int 值数组、具有字母顺序和“反转”字母顺序的多个属性进行排序
- python - 使用 Python/Pandas 数据框的每一天的唯一数据
- python - 如何从目录中读取文件并将其转换为表?