У меня есть простое MVC 4 (бета) приложение и я только что заметил что-то, что, как я полагаю, может быть обработано по-другому. В этом случае, когда вызванное ниже действие продукта называется, модель создается и присваивается ViewData для использования в View . Это все работает нормально, свойство Model не равно нулю, а использование Views в свойстве Model работает.
[HttpGet]
public ActionResult Product()
{
return ExecuteFormRequest(View(), true, delegate
{
var model = Request.ParseFromQueryString<Product>();
if (model != null)
{
ViewData.Model = model;
}
return View();
});
}
Когда продукт обновляется и отправляется обратно в контроллер, все данные выглядят нормально, но если продукт не проходит проверку и я возвращаю View ActionResult (, как показано ниже ), View встречается исключение нулевой ссылки, поскольку свойство Views Model теперь имеет значение null
[HttpPost]
public ActionResult Product(Product product)
{
if (!ModelState.IsValid)
{
return View();
}
// Do other business stuff and target new or same View
return View();
}
Это строка в View , которая приводит к исключению нулевой ссылки, поскольку свойство Model теперь имеет значение null.
@if (!string.IsNullOrEmpty(Model.MyValue)) {}
Я решил это, сбросив свойство Model (, как показано ниже ). Мне это кажется неправильным, и мне интересно, правильно ли я к этому отношусь. Любые идеи приветствуются?
[HttpPost]
public ActionResult Product(Product product)
{
if (product!= null)
{
ViewData.Model = product;
}
if (!ModelState.IsValid)
{
return View();
}
// Do other business stuff and target new or same View
return View();
}