在同一MVC视图中显示单独的表

时间:2014-03-12 10:44:21

标签: c# entity-framework model-view-controller

我用实体创建了两个不同的表。 代码如下所示:

public class Frisorer
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Scheman> Schema { get; set; }
    }

    public class Scheman
    {
        public int Id { get; set; }
        public DateTime Schemat { get; set; }
        public virtual Frisorer frisorer { get; set; }
    }

我的上下文文件:

 public class Context : DbContext
{
    public Context()
    : base("DefaultConnection")
{
}
    public DbSet<Frisorer> Frisorer { get; set; }
    public DbSet<Scheman> Scheman { get; set; }
}

使用密钥建立表之间的关系可以创建表格。   我现在想要的是能够在MVC的同一视图中显示我的frisor的名称/ id和他们的模式。但是当我尝试添加一个视图时,我只能选择带有Frisorer OR Schemas的强类型视图......我怎样才能同时显示两个表?

编辑:

我创建了一个新类,我在其中对其他两个类进行了编程:

public class Frisorer
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Scheman> Schema { get; set; }
    }

    public class Scheman
    {
        public int Id { get; set; }
        public DateTime Schemat { get; set; }
        public virtual Frisorer frisorer { get; set; }
    }

    public class BigViewModel
    {
        public List<Frisorer> Frisorer { get; set; }
        public List<Scheman> Scheman { get; set; }
    }

控制:

public ActionResult hopp()
        {

            BigViewModel bv = new BigViewModel();
            bv.Frisorer = (from o in cont.Frisorer select o).ToList();
            bv.Scheman = (from or in cont.Scheman select or).ToList();
            return View(bv);

        }

我创建了一个视图,我选择BigViewModel作为强类型,并列为脚手架。 得到此错误: 传递到字典中的模型项的类型为“MvcApplication3.Models.BigViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1 [MvcApplication3.Models.BigViewModel]”的模型项

3 个答案:

答案 0 :(得分:1)

创建第三个类,某种类型的ViewModel / Wrapper,它将封装您需要的所有内容。然后在您的视图中引用它。

答案 1 :(得分:1)

您只需将视图中的模型从@model IEnumerable<BigViewModel>更改为@model BigViewModel,然后迭代FrisorerScheman,如下所示:

@model BigViewModel

<ul>
    @foreach(var item in Model.Frisorer) 
    {
        <li>@item.Id - @item.Name</li>
    }
</ul>

<ul>
    @foreach(var item in Model.Scheman) 
    {
        <li>@item.Id - @item.Schemat</li>
    }
</ul>

答案 2 :(得分:1)

您收到异常是因为当视图预期收集object时,您将单个BigViewModel传递给视图。

尝试将视图中的模型分配更改为:@model BigViewModel而不是@model IEnumerable<BigViewModel>,然后在Model中迭代集合:

@foreach(var frisor in Model.Frisorer)
{
   //do stuff
}

@foreach(var schema in Model.Scheman)
{
   //do stuff
}