2014-03-12 48 views
1

我已经创建了两个具有实体的不同表格。 的代码看起来是这样的:在同一个MVC视图中显示单独的表格

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或Schemas的强类型视图...我怎样才能将两个表都显示在一起?

编辑:

我创建了一个新的类,我encaosulated其他两个类:

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]的模型项。 '

回答

1

你所得到的异常,因为你正在传递一个单一object到当视图预期收集BigViewModel时的视图。

尝试在你看来量变到质变的modelbinding到:@model BigViewModel而不是@model IEnumerable<BigViewModel>然后遍历集合在Model

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

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

谢谢!这工作! – user2915962

1

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

+0

是否可以让我怎么做,在一个答案吗? 在网上看,但我见过的大部分网站都要求我改变一切.. – user2915962

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> 
+0

Hi @BiffBaffBoff,如何在同一张表中显示2张表。那可能吗? – sara

相关问题