Почему мой объект viewModel возвращает значение null? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть 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;

    }

1 Ответ

2 голосов
/ 26 мая 2020

вы забыли инициализировать сообщение и класс пользователя:

        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;

Вывод: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...