Доступ к модели из бритвы в MVC - PullRequest
0 голосов
/ 04 июля 2018

У меня есть следующий код в виде контроллера и бритвы.

Когда вызывается Upload(), я хочу вернуть другое представление с моделью в качестве параметра, чтобы оно было доступно в представлении.

Но я продолжаю получать "Ссылка на объект не установлена ​​на экземпляр объекта" on @Model.PhoneNumber

Другой вопрос, что модель должна быть строго типизирована? Кажется, когда я передаю new { PhoneNumber = "123456" }, свойство не может быть доступно из вида.

[HttpGet]
[Route("{code}/CertificateValidation")]
public ActionResult CertificateValidation()
{
    return View();
}

[HttpPost]
public ActionResult Upload(FormCollection file)
{
    return View("CertificateValidation", new IndexViewModel { PhoneNumber = "123456" });
}

Вид:

model WebApplicationMVC.Models.IndexViewModel    
<p>@Model.PhoneNumber </p>

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Проблема с вашим методом получения.

Ваш следующий метод не возвращает ни одной модели. Таким образом, модель равна нулю, поэтому выдает ошибку.

[HttpGet]
[Route("{code}/CertificateValidation")]
public ActionResult CertificateValidation()
{
    var model = new IndexViewModel();
    return View(model);
}
0 голосов
/ 04 июля 2018

Способ, которым вы возвращаете представление с моделью, является правильным и не должен иметь никаких проблем.

return View("CertificateValidation", new IndexViewModel { PhoneNumber = "123456" });

Тем не менее, скорее всего, ваш реальный код не будет таким, и он может извлекать данные из некоторого источника, например вероятной базы данных, который может возвращать null, который вы можете исследовать путем отладки или записи нулевых проверок.

Для второго ответа, если вы задаете тип модели в представлении с помощью директивы @model, вы должны предоставить экземпляр этого типа в вызове метода return View (). В качестве альтернативы вы можете использовать @model dynamic, который позволит вам передать что-либо в качестве модели. Смотрите эту ссылку

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