【问题标题】:Error : "model item passed into the dictionary is null" in MVC错误:MVC 中的“传入字典的模型项为空”
【发布时间】:2014-05-09 19:46:08
【问题描述】:

得到一个我不明白的错误: "传入字典的模型项为空, 但是这个字典需要一个'System.Decimal'类型的非空模型项。” 发生在视图中的这一行:

<td>@Html.EditorFor(model => model.Price)</td>

它应该为空。这是一个创建产品页面。这是代码:

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.

是什么导致了这个错误?谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor


    【解决方案1】:

    你没有向视图传递任何东西,而是一个空对象,因此它说 model.price 为空。如果你希望你的编辑器模板被填充,你必须说

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

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

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

    【讨论】:

    • 谢谢,.. 当您说“由于您正在向视图传递一个 ProductItems 类型的模型,您的视图也必须期望该类型。”时,您给了我一个提示。所以我改变了:return View(items.Products);返回视图(项目);它奏效了。 (items.Products) 属于“产品”类型。整个模型的事情一开始很棘手,但越做越容易犯错。
    【解决方案2】:
    @model  Nop.Web.Models.ProductItems
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)    
        <table>
            <tr>
                <td>@Html.EditorFor(model => model.Price)
                </td>
            </tr>
    
        </table>
    }
    

    我已经使用了您的代码,并且您的代码在我的处理过程中没有引发错误,但您也使用这种视图并小心第一次清理构建。

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2020-07-05
      • 2012-11-09
      相关资源
      最近更新 更多