2017-09-07 1 views
0

私は.NET MVC5のプロジェクトに取り組んでいます。最初のアプローチを使用して、データベーステーブルを作成しました。インデックスページの2つの異なる部分(データベースのカテゴリ)または同じデータベーステーブル。同じデータベーステーブルのLINQを使用して、1つのWebページの2つの異なる部分のデータを取得する方法はありますか?

"最近のイベント"という名前の部分の1つでうまく動作する以下のコントローラを作成しましたが、 "Featured_Events"という名前のホームページの2番目の部分のレコードを取得しようとすると困惑します。同じコントローラを使用していますか?

最初はロジックが両方の部分でうまく動作するようにしたいが、熟練者が自分の投稿を読んでいる場合には、親切にも、私は注目イベントの部分で特定のレコード数を取得する方法を教えてください。最近のイベントで8件のレコードを取得していますが、「おすすめのイベント」セクションで12件のレコードを取得したいのですが?

これはコントローラです:

public ActionResult Index() 
{ 
    var result = (from i in _context.consult 
        orderby i.date_of_event descending 
        where i.category == "recent_events" 
        select i).Take(8); 
    return View(result); 
} 

ただ、さらに明確化のために:私は、データを取得するためにforeachループを使用してビューで:FOR

@model Ienumurable <Example.Models.consultation> 

CODE: 例として、それはこのようになります最近の出来事の一部

@foreach (var recent in Model) 
{ 
    if (@recent.category == "recent_events") 
    { 
     <p>@recent.date</p> 
     <p>@recent.details</p> 
    } 
} 

CO特集イベントのための部分

@foreach (var featured in Model) 
{ 
    if (@featured.category == "featured_events") 
    { 
     <p>@featured.date</p> 
     <p>@featured.details</p> 
    } 
} 

誰でもこの点について私を助けることができたら本当にうれしいです。

答えて

1

戻りたい項目のリストが2つあると仮定して、両方のリストをパブリックプロパティとして保持している新しいクラスを作成し、コントローラに両方を設定して新しいクラスを返します。

モデルには両方のモデルが含まれ、Razorを使用してモデル全体を反復処理できます。

例:

public class EventsDataModel 
{ 
    public List<Event> RecentEvents { get;set; } 
    public List<Event> FeaturedEvents { get;set; } 

    public EventsDataModel() 
    { 
      RecentEvents = new List<Event>(); 
      FeaturedEvents = new List<Event>(); 
    } 
} 

コントローラが、今の両方を取り込みます

public ActionResult Index() 

    { 
     var result = new EventsDataModel(); 

     result.RecentEvents = (from i in _context.consult 
         orderby i.date_of_event descending 
         where i.category == "recent_events" 
         select i).Take(8); 
     result.FeaturedEvetns = whatever 
      return View(result); 


     } 
+0

親愛なるアンドレイDragotoniu、私は本当にあなたの応答に感謝します。 しかし、2つのリストを使用するということは、2つの異なるクラスを持つことを意味し、さらに2つの別個のテーブルをデータベースに持つことを意味します。 これは、両方のセクションが類似のデータを共有するため、データ入力段階で冗長性を作成しますが、時間と人気の唯一の違いがあります。これは、日付が最近のものであれば、最近のセクションに行き、フィーチャがデータベーステーブルでyesに設定されている場合は、見出しと完全な説明のような残りのデータが両方のセクションで同じになるように、 。 – Ahmad

+0

そして、私はこのロジックについて長い時間を費やしてきたので、LINQの部分に何かが足りないと思っています.LINQクエリを洗練して修正することができます。どう思いますか?お返事ありがとうございました。 – Ahmad

+0

とにかく、私はあなたのロジックを使って問題を解決することができました。モデルディレクトリのクラスを使ってデータベース設計を少し変更し、ロジックを適用しました。再度ありがとう、私は本当にあなたの親切な協力に感謝します。 – Ahmad

関連する問題