繁体   English   中英

我的模型中的空对象由视图返回并传递给控制器​​,尽管它以表格形式输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM