2017-04-06 74 views
1

我一直試圖讓我的頭在這個整個概念,我真的可以使用你的幫助球員。我正在使用代碼優先的方法。我昨天發了一篇文章here,但基於建議的進一步工作對我並不適用。所以爲了讓問題清楚,我再次回過頭來。ViewModel MVC 5 2模型,數據庫,控制器視圖關係的理解

我有2個簡單的類。

public class Media 
    { 
     public int Id { get; set; } 
     public string title { get; set; } 
     public string description { get; set; } 
     public string body { get; set; } 
     public string ImagePath { get; set; }   
    } 

public class Video 
{ 
    public int ID { get; set; } 
    public string Title { get; set; } 
    public string Description { get; set; } 
    public string VideoLink { get; set; } 
    public string tags { get; set; } 
} 

對於每個人,我有自己的控制器,並設置由EF genereated CRUD意見。所以,我可以創建並存儲在數據庫這兩個對象,我有一個上下文類:

public class EventsContext : DbContext 
    { 
     public DbSet<Media> Medias { get; set; } 
     public DbSet<Video> Videos { get; set; } 
     } 
    } 

我有這樣的方法IM MediasController

public ActionResult MediaMain() 
{ 
    IEnumerable<Media> medias = db.Medias; 
    ViewBag.Medias = medias; 
    return View(); 
} 

它訪問從數據庫中存儲的對象,並允許工作與每個領域的視野。這條路。

@foreach (var b in ViewBag.Model) 
{ 
    @Html.Raw(Model.ImagePath) 
} 

好聽,我明白了。但。我仍然有兩種不同的看法,而我只需要一種。所以,我創建了一個MediaViewModel類(感謝提供幫助的)看起來像這樣:

如果我創建MediasController的方法是這樣的:

public ActionResult MediaMain() { 
    var model = new MediaViewModel(); 
    return View(model); 
} 

我不能從對象的訪問數據,它給了我一個虛擬的感覺,看起來好像我沒有發送一個對象。我認爲我需要像IEnumerable<MediaViewModel> medias = db.MediaViewModel;這樣的東西,但我沒有在我的數據庫環境中,我需要創建一個嗎?如果是這樣,它將是兩個類的對象的集合?這聽起來不對。我需要看看Controller中究竟發生了什麼,並且能夠訪問我需要的所有數據。請幫助。

+0

查看下面的答案。問任何事情,如果有的話。謝謝 –

回答

1

模型

public class MediaViewModel 
{ 
    public List<Media> media { get; set; } 
    public List<Video> video { get; set; } 
} 

你的控制器方法:

public ActionResult MediaMain() { 
    var model = new MediaViewModel(); 
    model.media = db.Medias.ToList(); 
    model.video = db.Videos.Tolist(); 
    return View(model); 
} 

希望它幫助。

+0

這樣做。謝謝。 –

相關問題