2017-04-06 46 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

这样做。谢谢。 –

相关问题