【问题标题】:MVC Model Not workingMVC 模型不工作
【发布时间】:2015-03-12 19:40:21
【问题描述】:

如果我用模型构建网格,它就可以工作。但是如果我将相同的模型传递给部分,它就不起作用。它正在抛出一条错误消息。

传入字典的模型项的类型为“Models.Asset”,但此字典需要类型为“System.Collections.Generic.List`1”的模型项

下面是我的剑道网格,这是我的部分

@Html.Partial("_Address", Model.Address)

 @(Html.Kendo().Grid(Model.Address)
.Name("Grid")
.Columns(columns =>
{
    columns.Bound(p => p.Id).Hidden();
    columns.Bound(p => p.Address).Width(300);
    columns.Command(command => { command.Edit(); command.Destroy(); }).Width(200);
})
          .Events(events =>
                    {
                        events.Save("onSave");
                        events.Edit("onEdit");

                    })
.Editable(editable => editable.Mode(GridEditMode.InLine))
.ToolBar(toolBar =>
  {
      toolBar.Create().Text("Add Address");
  })
.Scrollable()
.DataSource(dataSource => dataSource
    .Ajax()
    .Events(events => events.Error("onError"))
    .Model(model => model.Id(p => p.Address))
   .ServerOperation(false)
)
                        )

【问题讨论】:

  • 这是一个很好的错误信息。这意味着在您的部分顶部,您已将模型定义为列表,但将其传递给 Model.Address。由于它们不匹配,因此会引发错误
  • 发布你的部分cshtml
  • @MattBodily 在我的模型中,我将 Address 声明为 List
  • 主视图的模型是Asset吗? (在这种情况下,Address 属性为 null - 因此例外)
  • 你的局部模型声明是什么样的?

标签: asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc


【解决方案1】:

正如 Stehphen Muecke 所说,Model 为空。所以,我声明我的部分如下。

@Html.Partial("_Address", (Model.Address ?? new List<Address>))

【讨论】:

  • 更好的方法是为Asset 使用一个无参数构造函数来初始化Address - 即public Asset() { Address = new List&lt;Address&gt;() }
猜你喜欢
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多