我用 aViewModel
来表示我的数据库中的两个实体,“类别”和“制造商”,因为我希望它们作为下拉列表。我已经设法为它们创建了声音和工作下拉列表。
这是视图模型:
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);
但只是得到了同样的错误。
有没有人有任何解决方案?我真的很感激任何帮助。