2009-08-04 38 views
0

単一のビューでは、3セットのページデータがあります。各モデルのために意味している私はASP.NET MVCで複数のデータセットをページングする方法

  • オブジェクト
  • ページインデックスを持つことになります

私の最初の考えは、たとえばたページサイズ:次に持つ

public class PagedModel<T> where T:class 
{ 
    public IList<T> Objects { get; set; } 
    public int ModelPageIndex { get; set; } 
    public int ModelPageSize { get; set; } 
} 

アクションに供給されるモデル:例えば、

public class TypesViewModel 
{ 
    public PagedModel<ObjectA> Types1 { get; set; } 
    public PagedModel<ObjectB> Typed2 { get; set; } 
    public PagedModel<ObjectC> Types3 { get; set; } 
} 

は、だから私は、その後、例えばIndexビューがタイプを継承している場合:

System.Web.Mvc.ViewPage<uk.co.andrewrea.forum.Web.Models.TypesViewModel> 

を今すぐインデックスのための私の最初のaciton方法は単純です:

public ActionResult Index() 
    { 
     var forDisplayPurposes = new TypesViewModel(); 
     return View(forDisplayPurposes); 
    } 

私はその後、したい場合はページ、それはここで私が取るべき行動を決めるのに苦労しているところです。 Types2 PageModelの次のページを選択します。どのような行動は、私がアクションを複製するが、POST

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(TypesViewModel model) 
{ 
    return View(model); 
} 

でそれを使用する可能性が考えていたTypes2 PageModel

の2ページ目を示す新しいビューを返すために、このためのようになりますと、このAでありそれにアプローチする良い方法。私はいつもセッションがあることを理解していますが、そのようなことが現在どのように達成されているのか不思議に思っていました。最高の方法が相互に受け入れられていれば、物事。

単純に、ページングされた複数のモデルを含む1ページ。ラッパーモデルを使用して、それぞれのデータを永続化する方法。あなたはモデルに合格しなければならないし、その方法は、あなたがデータ、すなわちフォームポスト

最後には、私が見ているページのルートは

{controller}/{action}/{id}/{pageindex}/{pagesize} 

すなわち、このことを考慮に入れる必要がありますが、どの方法1つのモデルのため、このアカウントのみ私は本当に私がラッパーモデルの中に持っているモデルの数のためにpagesizeとpageindexの値を繰り返すことを望んでいません。

ありがとうございます!

アンドリュー

+0

質問は何ですか?どのようにルートを形成できますか? –

+0

単一のページに複数のデータセットが含まれていて、別々にページングする必要がある場合(つまり、pageIndex1/pageSize1/pageIndex2/pageSize2などは不要です)、ルートとモデルを処理するための簡単な方法です。 –

答えて

0

私見のように、あなただけではなくオブジェクトのコレクションが、コレクション、いくつかの拡張型の、例えば、何かを持っているならば:

public class PagedModelElement<T> where T:class 
{ 
    public byte Step { get; set; } 
    public string Name { get; set; } 
    public T Value { get; set; } 
} 

public class PagedModel<T> where T : class 
{ 
    public IList<PagedModelElement<T>> Objects { get; set; } 
} 

ModelPageIndexが必要とされていないあなたが簡単に返すことができるので、 ModelPageSizeだけでなく、いくつかのページ(インデクサーを使用するかもしれない)に属するすべてのオブジェクトは、いくつかのページに属するすべてのオブジェクトのCount()関数によって計算することができます。

だから、あなたが必要なだけparamはPAGENOで、URLにこれら2つのパラメータを渡すことを心配する必要はありません。

{controller}/{action}/{pageNo} 
Account/ShowUsers/3 
+0

しかし、私が意味することは、1ページに3つのデータセットがあり、それぞれが別々にページングできることです。たとえば、データセット1はページ1に、データセット2はページ5に、データセット3はページ50にあります。私は現在考えているこのシナリオです!私はあなたの時間とフィードバックに感謝!アンドリュー:-) –

関連する問題