Я использовал ViewModel
для представления двух объектов в моей базе данных: «Категории» и «Производители», потому что я хочу, чтобы они были в виде раскрывающегося списка. Мне удалось создать звуковые и рабочие выпадающие списки для них обоих.
Вот ViewModel:
public class New_Product_View_Model
{
public int SelectedManufacturerID { get; set; }
public SelectList Manufacturers { get; set; }
public int SelectedCategoryID { get; set; }
public SelectList Categories { get; set; }
}
Вот действие [HttpGet] Controller
:
public ActionResult Insert_New_Product()
{
var dbcontext = new LNQ2SQLDataContext();
var CatQ = from P in dbcontext.Categories
where P.SUB_CAT == null
select P;
var ManQ = from P in dbcontext.Manufacturers
select P;
var VM = new New_Product_View_Model();
VM.Categories = new SelectList(CatQ, "CAT_ID", "CAT_Name");
VM.Manufacturers = new SelectList(ManQ, "MAN_ID", "MAN_Name");
//Passes the 'VM' to the view
return View(VM);
}
И представление, которое у меня есть, выглядит так:
@model MyAppName.ViewModels.New_Product_View_Model
@using (Html.BeginForm(FormMethod.Post))
{
@Html.DropDownListFor(m => m.SelectedCategoryID, Model.Categories, "-- Select a category --")
<br />
@Html.DropDownListFor(m => m.SelectedManufacturerID, Model.Manufacturers, "-- Select a manufacturer --")
<input type="submit" value="Add New Product" />
}
Пока все работает отлично
Теперь вот [HttpPost] ActionResult :
[HttpPost]
public ActionResult Insert_New_Product(New_Product_View_Model NPVM)
{
//A few things here
//then
return View();
}
Когда я нажимаю кнопку отправки на странице, я получаю эту ошибку:
И, насколько я знаю, это потому, что Model
в представлении равно null
, когда запускается метод HttpPost. Поскольку return
в действии HttpPost не имеет экземпляра New_Product_View_Model
. Это глупо, потому что я не хочу передавать какие-либо модели в представление СНОВА! Я просто хочу, чтобы та же страница была доступна на случай, если мне нужно будет добавить больше продуктов.
Я попытался обменять return
на этот:
return View(new New_Product_View_Model());
Но я получаю эту ошибку: см. изображение здесь
Я также пробовал это:
NPVM = new New_Product_View_Model();
return View(NPVM);
Но только что получил ту же ошибку.
У кого-нибудь есть решение? Я был бы очень признателен за любую помощь.