MVC C# ViewModel с табличным объектом

У меня есть модель представления как таковая

    public class NoteViewModel
    {
      public tblNotes tblnote { get; set; }   
    }

В моем контроллере я делаю следующее после сборки, чтобы мой контроллер знал о viewmodel:

    NoteViewModel viewModel= new NoteViewModel();

    viewModel.tblnote.NoteModeID  = 1234; // get error here

    return PartialView(viewModel);

Я получаю следующую ошибку, хотя:

{"В экземпляре объекта не задана ссылка на объект."}

2 ответа

Решение

Какой тип tblNotes? (Примечание: в C# имена классов должны начинаться с заглавной буквы).

Так как это пользовательский тип и, таким образом, ссылочный тип, его значение по умолчанию null, Поэтому, когда вы создаете новый экземпляр NoteViewModel он собирается установить для всех своих членов значения по умолчанию, если не указано иное. Поскольку это значение nullВы не можете использовать это здесь:

viewModel.tblnote.NoteModeID = 1234;

Не зная больше о ваших типах, простой ответ - просто создать экземпляр этого члена в конструкторе модели представления:

public class NoteViewModel
{
    public tblNotes tblnote { get; set; }

    public NoteViewModel()
    {
        tblnote = new tblNotes();
    }
}

Таким образом, объект будет создаваться каждый раз при создании модели представления, поэтому вы можете использовать его.

Что именно tblNotes? Если это ссылочный тип, чем viewModel.tblNote является null после выполнения первой строки кода.

Другие вопросы по тегам