2014-03-12 84 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

相關問題