Проект MVC3.
У меня есть несколько классов: учетная запись, адрес, телефон и т. д., которые я настроил в модели представления.
namespace ViewModels
{
public class AccountVM
{
public Account Account { get; set; }
public Address Address { get; set; }
public Phone Phone { get; set; } }
В действии контроллера GET я просто вызываю представление
public ActionResult Create()
{ return View(); }
В представлении я передаю модель представления
@model AccountVM
Затем я использую @Html.EditorFor, чтобы заполнить все поля и успешно передать их в действие POST и создать записи в базе данных. Так что весь этот код работает.
@Html.EditorFor(z => z.Account.Number)
Проблема возникает, когда я пытаюсь предварительно заполнить некоторые свойства. Я делаю следующее в действии GET.
public ActionResult Create()
{ var viewModel = new AccountVM();
viewModel.Account.Number = 1000000;
return View(viewModel); }
Код проходит Intellisense, но при запуске я получаю сообщение об ошибке «NullReferenceException не было обработано пользовательским кодом — ссылка на объект не указывает на экземпляр объекта».
Я получаю ту же ошибку, если пытаюсь заполнить код в представлении.
@{ Model.Account.Number = 1000000; }
Мне нужно иметь возможность программно заполнять свойства как в контроллере, так и в представлении. Я прочитал несколько сообщений SO о том, как заполнить модель представления в контроллере, и смоделировал на них свой код, но по какой-то причине мой код не работает. Что я здесь делаю неправильно? Как мне это сделать как в контроллере, так и в представлении? Я понимаю, что объекты имеют значение null при создании, но не могу понять, как это обойти.
Спасибо