得到错误我不明白: “传入字典的模型项为null, 但是这个字典需要一个'System.Decimal'类型的非null模型项。“ 发生在视图中的这一行:
<td>@Html.EditorFor(model => model.Price)</td>
它应该为null。这适用于“创建产品”页面。这是代码:
public ActionResult Create()
{
var items = new ProductItems();
return View(items.Products);
VIEW :
@using Nop.Web.Models.Products
@model ProductItems
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<tr>
<td>@Html.EditorFor(model => model.Price) << error here
VIEW MODEL :
public class ProductItems
{
public decimal Price { get; set; }
public IEnumerable<Product> Products { get; set; }
NOTE : I previously changed the View Model. It was :
@model Nop.Core.Domain.Catalog.Product
and it worked before I changed it.
导致此错误的原因是什么?感谢
答案 0 :(得分:3)
你没有向视图传递任何东西,而是一个空对象,因此它说为model.price为null。如果您希望填充编辑器模板,则必须说明
public ActionResult Create()
{
ProductItems items = new ProductItems();
items.Price = 15.99;
return View(items);
}
由于您正在向视图传递类型为ProductItems
的模型,因此您的视图也必须具有该类型。您应该将Model Classes放入Models文件夹中。在您的视图中调用的默认值为
@model NameSpace.Models.ProductItems,不确定模型类的路径。
答案 1 :(得分:0)
@model Nop.Web.Models.ProductItems
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table>
<tr>
<td>@Html.EditorFor(model => model.Price)
</td>
</tr>
</table>
}
我已经使用了你的代码而你的代码在我的处理过程中没有出现错误,但是你也像这个视图一样使用并且要小心第一次清理构建。