2017-04-06 7 views
1

私はこのコンセプトの周りに頭を抱えようとしています。私はコードの最初のアプローチから取り組んでいます。私は昨日の投稿を作ったhereしかし、アドバイスに基づくさらなる仕事は私にとってはうまくいかなかった。問題を明確にするために、私はもう一度それを調べます。ViewModel MVC 5 2モデル、db、コントローラビューのリレーションシップの理解

私は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ビューのセットを有します。だから私はデシベルで、この2つのオブジェクトを作成し、保存することができ、私はそのためのコンテキストクラスを持っている:

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

私はこの方法イムMediasController

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

を持っていることは、DBから格納されたオブジェクトにアクセスし、操作することができますすべてのフィールドが表示されますこちらです。

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

わかりやすく、わかりました。しかし。私はまだ2つの異なるビューを持っていますが、私は1つしか必要ありません。だから私はこのように見ているMediaViewModelクラス(それとの助けに感謝を)作成:

私はMediasControllerでメソッドを作成する場合は、次のようになります

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

私は、オブジェクトからのアクセスデータを傾ける、などそれは私に不快感を与える、私はオブジェクトを送信していないように見えます。私はIEnumerable<MediaViewModel> medias = db.MediaViewModel;のようなものを持っている必要があると思うが、これは私のdbコンテキストでは持っていない。作成する必要があるのだろうか?もしそうなら、それは2つのクラスのオブジェクトのコレクションでしょうか?それは正しいとは言えません。私はコントローラで何が起こっているのかを見て、必要なすべてのデータにアクセスできるようにする必要があります。 Plsヘルプ。

+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

それはそれをしました。ありがとうございました。 –

関連する問題