传递的模型项与IEnumerable不匹配

时间:2016-06-17 04:37:03

标签: asp.net-mvc-4

型号:

public class Tables: DbContext
{
    public IEnumerable<Thing> Thing { get; set; }
    public List<Thing2> Thing2 { get; set; }

    public System.Data.Entity.DbSet<Example.MainTable> MainTables { get; set; }

    public System.Data.Entity.DbSet<Example.Table2> Tables2 { get; set; }

}

查看:

@model IEnumerable<Example.MainTable>

控制器:

public ActionResult ABC()
    {
        var model = new Example.Models.Tables();

        string ABC = "ABC";

        model.MainTables = db.Example.Where(d => d.ColumnName.Contains(ABC)).ToList();

        model.Tables2 = (from d in db.MainTables.ToList()
                              join j in db.Tables2.ToList() on d.AssignID equals j.ID
                              select new Tables2() { Name = j.Name });

        List<Tables> allTables = new List<Tables>();
        allTables.Add(model);
        return View(allTables);
    }

错误讯息:

  

传递到字典中的模型项的类型为System.Collections.Generic.List 1[Example.Models.Tables], but this dictionary requires a model item of type System.Collections.Generic.IEnumerable 1 [Example.MainTable]。

尝试2(在控制器中返回之前删除最后2行并替换):

 return View(model);

错误讯息:

  

传递到字典中的模型项的类型为“Example.Models.Tables”,但此字典需要类型为“System.Collections.Generic.IEnumerable”1 [Example.MainTable]'的模型项。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

将视图上的模型更改为@model IEnumerable<Example.Tables> 或在您的控制器中进行以下更改

List<MainTable> allTables = new List<MainTable>();
allTables.Add(model.MainTables);