【问题标题】:Why is my viewModel object returning null?为什么我的 viewModel 对象返回 null?
【发布时间】:2020-09-13 03:35:01
【问题描述】:

我有 2 个类,Message 和 User,并且我创建了一个包含这两个类的 viewModel:

public class User
{
    [Key]
    public int UserId { get; set; }

    public string Username { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public ICollection<Message>? Messages { get; set; } = new Collection<Message>();

}

public class Message
{
    [Key]
    public int MessageId { get; set; }

    public string MessageContent { get; set; }

    public DateTime DateCreated { get; set; }
}

public class NewMessageViewModel
{
    public Message Message { get; set; }

    public User? Sender { get; set; }

    public User? Receiver { get; set; }
}

但是,当我尝试通过控制器传递 viewModel 并取回一些 json 时,它会出现 'System.NullReferenceException: 'Object reference not set to an instance of an object.' 错误

我没有正确地通过某些东西,我知道,但对于我的生活,我可以看到哪里出了问题!我太接近客观性了,所以有人可以指出我犯的愚蠢错误吗?

我的控制器动作:

    [Route("NewMessageViewModel")]
    [HttpGet]
    public NewMessageViewModel GetNewMessageViewModel()
    {

        NewMessageViewModel newmv = new NewMessageViewModel
        {
            Message = { MessageContent = "HelloWord", MessageId = 1, DateCreated = DateTime.Now},
            Receiver = { UserId = 1, Messages = null, FirstName = "Andy", LastName = "Stav", Username = "AndyStav" },
            Sender = { UserId = 2, Messages = null, FirstName = "Test", LastName = "Test", Username = "Test" }

        };

        return newmv;

    }

【问题讨论】:

  • 首先你应该使用IActionResult而不是“NewMessageViewModel”,如果是get请求你应该返回Ok(newmv)另外我建议你设置一个断点并通过这个方法调试来查看错误源

标签: c# asp.net-core entity-framework-core asp.net-core-webapi viewmodel


【解决方案1】:

你忘记初始化消息和用户类:

        NewMessageViewModel newmv = new NewMessageViewModel
        {
            Message = new Message { MessageContent = "HelloWord", MessageId = 1, DateCreated = DateTime.Now },
            Receiver = new User { UserId = 1, Messages = null, FirstName = "Andy", LastName = "Stav", Username = "AndyStav" },
            Sender = new User { UserId = 2, Messages = null, FirstName = "Test", LastName = "Test", Username = "Test" }

        };

        return newmv;

输出:

【讨论】:

  • 啊,我就知道是那样的愚蠢!你知道什么时候你怎么看都看不到!谢谢它完美地工作!
猜你喜欢
  • 2019-01-19
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
相关资源
最近更新 更多