0

製品リストがあり、ページを更新するたびにパーツごとに表示するために、ページごとに 5 つ送信したいと考えています。すべてのパーツが表示されたら、次の更新でリストの最初からやり直します。商品リストのカウントが 5 の被除数でない場合、たとえばカウント = 23 の場合、最初に戻ります。つまり、15 対 20、次に 20 対 2 (21、22、23、1、および 2) を取ります。そして、3-8と続きます。

ページング ルールを次のように使用することはできません。

ViewBag.Result = db.Products.Skip( ( pageNo - 1 ) * 5).Take( 5 ).ToList();

なぜなら、すべてのアクションからその 5 つの製品をビューに送信し、すべての更新サイトで更新するからです。

ランダムなインデックスを取得して開始するという考えがありますが、最後の送信インデックスを知り、更新するたびにそれをコントローラーの現在のアクションに送信する必要があります。どうすればこれを達成できますか?

4

1 に答える 1

1

HTTP 呼び出し間で最後の送信インデックスを保持する必要があります。HTTP はステートレスであるため、中間に保持するための媒体が必要です。そのためにセッション変数を使用できます。

Session["LastIndexSent"]= 5;
return View(someITemList);

また、そのような結果を ViewBag で送信しないようにしてください。コントローラーとビューの間でデータを転送するような動的なものを使用ViewBag/ViewDataすると、コードが醜くなります。強く型付けされたアプローチを使用してください。

List<Product> productList=GetProductListFromSomeWhere();
return View(productList);

そして、強く型付けされたビューでは、

@model List<Product>
@foreach(var prod in Model)
{
  <p>@prod.Name</p>
}
于 2012-09-11T16:14:21.290 に答える