[英]Null object from my model returned by view and passed to controller despite entering it in the form
我正在编写一个带有实体框架后端的MVC5聊天应用程序。 我有以下代码,并且正在获取:对象引用未设置为对象的实例。 对于该行:
NewList.Users.Add(User);
在
public void AddUserToList(UserDetail User, string GroupName)
{
var collection = from pm in context.GroupUserLists.ToList() select pm;
foreach (var userList in collection)
{
if (GroupName == userList.GroupName)
{
userList.Users.Add(User);
context.Entry(userList).State = System.Data.Entity.EntityState.Modified;
return;
}
}
GroupUserLists NewList = new GroupUserLists();
NewList.GroupName = GroupName;
NewList.Users.Add(User);
context.GroupUserLists.Add(NewList);
context.SaveChanges();
}
我的观点是:
@model DatabaseDesign.Models.UserDetail
@{
Layout = null;
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.UserName, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ConnectionId, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ConnectionId)
@Html.ValidationMessageFor(model => model.ConnectionId)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
而我的控制器代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddUser(UserDetail User)
{
var Group = "mikes group";
try
{
if (ModelState.IsValid)
{
UserListRepository.AddUserToList(User, Group);
UserListRepository.Save();
return RedirectToAction("AddUser");
}
}
catch (DataException dex)
{
//Log the error (uncomment dex variable name after DataException and add a line here to write a log.
ModelState.AddModelError(string.Empty, "Unable to save changes. Try again, and if the problem persists contact your system administrator.");
}
return View();
}
最后是我的用户模型:
public class UserDetail
{
public int UserDetailId { get; set; }
public string ConnectionId { get; set; }
public string UserName { get; set; }
public int GroupUserListsId { get; set; }
public virtual GroupUserLists GroupUserLists { get; set; }
}
我希望有一天能为所有聊天系统编写一个教程,因此,尽管我非常感谢修复方面的任何帮助,但为什么同样重要。
编辑
db上下文:public DbSet GroupUserLists {get; 组; }
NewList.Users.Add(User);
我相信问题是Users对象没有初始化。 我看不到GroupUserLists的构造函数,但我可以想象它没有初始化Users集合。 当您尝试将User对象添加到未初始化的集合时,这将导致异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.