C# ASP.NET MVC Nullreferenceexception:System.Web.MVC.WebViewPage<;TModel>;。Model.get<;偏移量0x00000004处的字段>;是空的

C# ASP.NET MVC Nullreferenceexception:System.Web.MVC.WebViewPage<;TModel>;。Model.get<;偏移量0x00000004处的字段>;是空的,c#,asp.net-mvc,nullreferenceexception,C#,Asp.net Mvc,Nullreferenceexception,我正在为学校做一个项目(ASP.NETMVC),但今天我遇到了这个错误。我已经尝试了几个小时来解决这个问题,但没有任何效果。 在此应用程序中,您将登录并加载您的配置文件。这是可行的,但只要我更改概要文件数据(以表单形式),发布它,并返回带有刷新的viewmodel的视图(这仍然可以很好地工作),我就会得到这个nullreferenceexception。我一直在查看此异常的详细信息,但无法找出什么是null,以及导致此异常的原因 我的看法是: @model SailyWebApp.Viewmod

我正在为学校做一个项目(ASP.NETMVC),但今天我遇到了这个错误。我已经尝试了几个小时来解决这个问题,但没有任何效果。 在此应用程序中,您将登录并加载您的配置文件。这是可行的,但只要我更改概要文件数据(以表单形式),发布它,并返回带有刷新的viewmodel的视图(这仍然可以很好地工作),我就会得到这个nullreferenceexception。我一直在查看此异常的详细信息,但无法找出什么是null,以及导致此异常的原因

我的看法是:

@model SailyWebApp.Viewmodels.HomeUserViewmodel
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<body>
    @if(Session["User"] != null && !string.IsNullOrEmpty(Convert.ToString(Session["User"])))
     {
    <h2>Profile of @Session["User"].ToString()</h2>
    <form runat="server" method="post" id="userdata">
        Name:<br>
        <input type="text" name="Name" value="@Model.user.UserName" required /><br>
        Adress:<br>
        <input type="text" name="Address" value="@Model.user.Adress" required /><br>
        City:<br>
        <input type="text" name="City" value="@Model.user.City" required /><br>
        E-mail:<br>
        <input type="text" name="Mail" value="@Model.user.MailAdress" required /><br>
        Phone number:<br>
        <input type="text" name="Phonenumber" value="@Model.user.PhoneNumber" required /><br>
        Profile description:<br>
        <input type="text" name="Description" value="@Model.user.Description" required /><br>
        <input type="submit" name="Save" value="Save" />
    </form>
    }
    else{
    <p>Please log in</p>
    }
</body>
我的HomeUserViewmodel

public class HomeUserViewmodel
{
    public User user;

    private string name;
    private string address;
    private string city;
    private string mail;
    private string phonenumber;
    private string description;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    public string Address
    {
        get { return address; }
        set { address = value; }
    }
    public string City
    {
        get { return city; }
        set { city = value; }
    }
    public string Mail
    {
        get { return mail; }
        set { mail = value; }
    }
    public string Phonenumber
    {
        get { return phonenumber; }
        set { phonenumber = value; }
    }
    public string Description
    {
        get { return description; }
        set { description = value; }
    }
}
例外情况详情:

System.NullReferenceException:“对象引用未设置为对象的实例”

System.Web.Mvc.WebViewPage.Model.get。是空的

提前感谢,我真的不知道在哪里可以找到这个空值(Logic.UserLogic.EditProfile(viewmodel.Address,viewmodel.City,viewmodel.Mail,viewmodel.Phonenumber,viewmodel.Description,currentUser.UserId))
if (Logic.UserLogic.EditProfile(viewmodel.Address, viewmodel.City, viewmodel.Mail, viewmodel.Phonenumber, viewmodel.Description, currentUser.UserId))
{
    currentUser = Logic.UserLogic.LoadUser(currentUser.UserId);
    HomeUserViewmodel newviewmodel = new HomeUserViewmodel();
    viewmodel.user = currentUser; // <- It's right here, this is your problem
    Session.Clear();
    Session["User"] = currentUser;
    return View(newviewmodel);
}
{ currentUser=Logic.UserLogic.LoadUser(currentUser.UserId); HomeUserViewmodel newviewmodel=新的HomeUserViewmodel();
viewmodel.user=currentUser;//可能有重复的异常详细信息未发布。异常详细信息将告诉您发生空引用的位置。@AleksAndreev我知道什么是NullRefenceException,我不知道为什么会出现此异常以及如何修复it@RobertHarvey我不知道该复制什么,也不知道在这些例外情况下该在哪里查找n详细信息。我找不到任何奇怪的东西。堆栈跟踪告诉您是哪一行代码导致了错误。您问题的标题是一条重要线索。在没有堆栈跟踪的情况下,您是如何发现这一点的?他的视图访问ViewModel的用户字段,他没有在引发异常的操作上填充它。似乎他应该编写
newviewmodel.user=currentUser
改为。正确。我想堆栈跟踪只会让我们知道它是在模型中第一次使用用户字段时抛出的,这是由错误所暗示的。facepalm我只花了4个小时打字…我确实填充了错误的viewmodel。谢谢你的帮助。完全没有看到这个
if (Logic.UserLogic.EditProfile(viewmodel.Address, viewmodel.City, viewmodel.Mail, viewmodel.Phonenumber, viewmodel.Description, currentUser.UserId))
{
    currentUser = Logic.UserLogic.LoadUser(currentUser.UserId);
    HomeUserViewmodel newviewmodel = new HomeUserViewmodel();
    viewmodel.user = currentUser; // <- It's right here, this is your problem
    Session.Clear();
    Session["User"] = currentUser;
    return View(newviewmodel);
}