Asp.net mvc 错误:";传递到字典中的模型项为空";在MVC中

Asp.net mvc 错误:";传递到字典中的模型项为空";在MVC中,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Razor,获取一个我不理解的错误: “传递到字典中的模型项为空, 但此词典需要“System.Decimal”类型的非空模型项。” 在视图中的此行发生: <td>@Html.EditorFor(model => model.Price)</td> @Html.EditorFor(model=>model.Price) 它应该是空的。这是一个创建产品页面。代码如下: public ActionResult Create() {

获取一个我不理解的错误: “传递到字典中的模型项为空, 但此词典需要“System.Decimal”类型的非空模型项。” 在视图中的此行发生:

<td>@Html.EditorFor(model => model.Price)</td>
@Html.EditorFor(model=>model.Price)
它应该是空的。这是一个创建产品页面。代码如下:

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.
public ActionResult Create()
{           
var items=新产品项();
返回视图(项目、产品);
视图:
@使用Nop.Web.Models.Products
@模型产品项
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

@Html.EditorFor(model=>model.Price)您没有向视图传递任何内容,而是传递一个空对象,因此它会说model.Price为null。如果您希望填充编辑器模板,则必须说

public ActionResult Create()
{           
            ProductItems items = new ProductItems();
            items.Price = 15.99;
            return View(items);

 }
由于您正在向视图传递类型为
ProductItems
的模型,因此您的视图也必须期望该类型。您应该将模型类放入“模型”文件夹中。在视图中调用的默认值为


@model NameSpace.Models.ProductItems,不确定模型类的路径。

您没有向视图传递任何内容,只是传递了一个空对象,因此它会说model.price为null。如果希望填充编辑器模板,您必须说

public ActionResult Create()
{           
            ProductItems items = new ProductItems();
            items.Price = 15.99;
            return View(items);

 }
@model  Nop.Web.Models.ProductItems

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)    
    <table>
        <tr>
            <td>@Html.EditorFor(model => model.Price)
            </td>
        </tr>

    </table>
}
由于您正在向视图传递类型为
ProductItems
的模型,因此您的视图也必须期望该类型。您应该将模型类放入“模型”文件夹中。在视图中调用的默认值为


@model NameSpace.Models.ProductItems,不确定模型类的路径。

您没有向视图传递任何内容,只是传递了一个空对象,因此它会说model.price为null。如果希望填充编辑器模板,您必须说

public ActionResult Create()
{           
            ProductItems items = new ProductItems();
            items.Price = 15.99;
            return View(items);

 }
@model  Nop.Web.Models.ProductItems

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)    
    <table>
        <tr>
            <td>@Html.EditorFor(model => model.Price)
            </td>
        </tr>

    </table>
}
由于您正在向视图传递类型为
ProductItems
的模型,因此您的视图也必须期望该类型。您应该将模型类放入“模型”文件夹中。在视图中调用的默认值为


@model NameSpace.Models.ProductItems,不确定模型类的路径。

您没有向视图传递任何内容,只是传递了一个空对象,因此它会说model.price为null。如果希望填充编辑器模板,您必须说

public ActionResult Create()
{           
            ProductItems items = new ProductItems();
            items.Price = 15.99;
            return View(items);

 }
@model  Nop.Web.Models.ProductItems

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)    
    <table>
        <tr>
            <td>@Html.EditorFor(model => model.Price)
            </td>
        </tr>

    </table>
}
由于您正在向视图传递类型为
ProductItems
的模型,因此您的视图也必须期望该类型。您应该将模型类放入“模型”文件夹中。在视图中调用的默认值为

@model NameSpace.Models.ProductItems,不确定模型类的路径。

@model Nop.Web.Models.ProductItems
@model  Nop.Web.Models.ProductItems

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)    
    <table>
        <tr>
            <td>@Html.EditorFor(model => model.Price)
            </td>
        </tr>

    </table>
}
@使用(Html.BeginForm()) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) @EditorFor(model=>model.Price) }
我已经使用了您的代码,您的代码在我的处理过程中没有引发错误,但您也使用类似于此视图的代码,并且在第一次清理构建时要小心

@model Nop.Web.Models.ProductItems
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@EditorFor(model=>model.Price)
}
我已经使用了您的代码,您的代码在我的处理过程中没有引发错误,但您也使用类似于此视图的代码,并且在第一次清理构建时要小心

@model Nop.Web.Models.ProductItems
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@EditorFor(model=>model.Price)
}
我已经使用了您的代码,您的代码在我的处理过程中没有引发错误,但您也使用类似于此视图的代码,并且在第一次清理构建时要小心

@model Nop.Web.Models.ProductItems
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@EditorFor(model=>model.Price)
}
我已经使用了您的代码,您的代码在我的处理过程中没有引发错误,但您也使用类似于此视图的代码,并且在第一次清理构建时要小心


谢谢,…你给了我一个提示,当你说“既然你正在传递一个ProductItems类型的视图,你的视图也必须期望该类型。”。所以我改变了:return视图(items.Products);return视图(items);它工作了。(items.Products)的类型是“Product”。整个模型一开始很棘手,但越做越容易出错。谢谢,…你给了我一个提示,当你说“既然你给视图传递的是ProductItems类型的模型,你的视图也必须期望该类型。”。所以我改了:return view(items.Products);return view(items);它成功了。(items.Products)是“Product”类型。这整个模型一开始很复杂,但是越做越容易出错。谢谢,…你给了我一个提示,当你说“既然你给视图传递的是ProductItems类型的模型,你的视图也必须是该类型的。”。所以我改了:return view(items.Products);return view(items);成功了。(items.Products)属于“Product”类型。整个模型一开始很复杂,但越做越容易出错。谢谢,…你给了我一个提示,当你说“既然你要传递视图一个ProductItems类型的模型,你的视图也必须期望该类型。”。所以我改了:return view(items.Products);return view(items)(items.Products)属于“产品”类型。整个模型一开始很复杂,但越做越容易出错。