2016-09-23 11 views
-2

私の目的は、(最近閲覧した)ステータスを持つすべてのムービーを(ブラウズビュー)で表示することです。ステータスが「最近」のムービーが表示されます。 アクションメソッドでLINQクエリを作成して、「最近」のステータスを持つムービーのリストを作成しようとしました。映画の状況について私のブラウズビュー内の私のforeachループの結果が表示されていませんasp.net mvc

namespace Cinema1.Models 
{ 
    [Bind(Exclude = "MovieId")] 
    public class Movie 
    { 
     public int MovieId { get; set; } 
     public int MovieGenreId { get; set; } 
     public int MovieStatusId { get; set; } 

     public virtual MovieStatus MovieStatus { get; set; } 
     public virtual ICollection<MovieGenre> MovieGenre { get; set; } 

//モデルクラス

namespace Cinema1.Models 
{ 
    public class MovieStatus 
    { 
     [Key] 


     public int MovieStatusId { get; set; } 
     public string Status { get; set; } 

//ストアコントローラ

  public ActionResult Browse(string q) 
      { 

       var statusModel = storeDB.Movies 
            .Include("MovieStatus") 
            .Where(a => a.Title.Contains(q)) 
            .Take(1); 


       return View(statusModel.ToList()); 





//seed database 

     Namespace Cinema1.Models 
    { 
     public class CinemaInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<CinemaContext> 
     { 
      protected override void Seed(CinemaContext context) 
      { 
       CinemaContext storeDB = new CinemaContext(); 

       context.Movies.Add(new Movie 
       { 
        MovieId = 01, 
        Title = "Blair Witch", 
        Rating = 15, 
        MovieStatusId = 2, 
        MovieStatus = new MovieStatus { Status = "Recent" }, 
        Cast = "Corbin Reid, Wes Robinson, Valorie Curry", 
        Director = "Adam Wingard", 
        RunningTimeMins = 89, 
        Language = "English", 
        Synopsis = "It’s been 20 years since James’ sister disappeared into the Black Hills Forest.   
       MovieDates.ForEach(s => context.MovieDates.Add(s)); 
       context.SaveChanges(); 





//the View for Browse action controller 

    @model IEnumerable<Cinema1.Models.Movie> 

    @{ 
     ViewBag.Title = "Browse"; 
    } 

    <h2>Movie status</h2> 

    <p> 
     Select from @Model.Count() Status: 
    </p> 


     <ul> 
      @foreach (var Movies in Model) 
      { 
       <li> 
        @Movies.Title 
       </li> 
       <li>@Movies.MovieStatus.Status</li> 
      } 
     </ul> 
+0

としてのステータスパラメータ値を使用するようにするには、「最近」にデフォルト値を設定することができますあなたは「最近」の状態の映画を入手していません。あなたは映画のタイトルのプロパティで検索する条件がどこにあるのですか?なぜあなたは「最近の」ステータスのアイテムを見るべきだと思いますか? – Shyju

答えて

0

私の目的は、(ブラウズ)に がcatagorizedされているすべての動画を表示することです/は "最近"のステータスを持っています。私の見解では@ model.count()の動作は...出力はゼロです。しかし、1つの映画が最近のステータスを持っているので、それは1ではないでしょうか?

ブラウズアクションメソッドでは、ステータスが「最近」のムービーを取得するコードはありません。代わりに、ムービータイトルのクエリーストリング "q"に渡す言葉を持つムービーのサブセットを取得するコードがあります。なぜあなたはそのコードが "最近"のステータスの映画を返すと期待していますか?

ステータスが「最近」の映画を取得するには、それをチェックするwhere句が必要です。以下のコードでそれを行うべきです。

public ActionResult Browse() 
{ 
    var statusModel = storeDB.Movies.Include("MovieStatus") 
            .Where(g => g.MovieStatus.Name == "Recent");   

    return View(statusModel.ToList()); 
} 

ここでは、常に「最近」のステータスの映画を提供します。クエリ文字列に基づいてこれを動的にする場合は、このメソッドにステータス名を持つパラメータを追加できます。あなたは、デフォルトでは、クエリ文字列に状態名を渡していない場合でも、それはあなたのBrowse`アクションメソッドでは、「最近の」

public ActionResult Browse(string status="Recent") 
{ 
    var statusModel = storeDB.Movies.Include("MovieStatus") 
            .Where(g => g.MovieStatus.Name == status);   

    return View(statusModel.ToList()); 
} 
+0

これはうまくいかず、私のウェブサイトをロードするとこれが表示されます:ムービーステータス 0から選択してくださいステータス://「最近」のステータスのムービーと同じように何もロードされていないようです。私は本当に間違っているのか分かりません。私は本当にこれを助けてくれてありがとう。前にありがとう –

+0

**映画の状態0から選択してくださいステータス:**これはどういう意味ですか?私はあなたがここで意味していたことにはかなり従っていません。私が答えで述べたように、あなたが持っていた質問のコードは、あなたの期待される結果に関しては意味をなさない。あなたの質問では、ステータスが「最近」の映画を表示したかったと答えています。答えのコードはそれを表示します。 「これはうまくいかない」と言うと、より具体的になりますか?特に動作しなかったのは何ですか? – Shyju

+0

提案したようにactionresult Browseコードを変更しました。私が望んでいた結果は、ウェブサイトが映画「Blair Witch」を読み込んで、「Blair Witch」の映画に「Recent」のステータスが与えられていたということでした。私はちょうど私のウェブサイトに表示される "最近"のステータスを持っている映画があったWebページが欲しいです。ありがとう –

関連する問題