0

私がページ付けしなければならないリストは、実際にはディレクトリ内のエントリです。私はデータベースからデータを取得しません。私のコントローラー部分:

public ActionResult Index()
{
  // Iterate over all folders in the SCORM folder to find training material

  UrlHelper urlHelper = new UrlHelper(HttpContext.Request.RequestContext);
  string scormRelativePath = urlHelper.Content("~/ScormPackages");
  string scormRootDir = HttpContext.Server.MapPath(scormRelativePath);
  string scormSchemaVersion = string.Empty;
  string scormTitle = string.Empty;
  string scormDirectory = string.Empty;
  string scormEntryPointRef = string.Empty;
  string scormIdentifierRef = string.Empty;
  Int16 scormLaunchHeight = 640;
  Int16 scormLaunchWidth = 990;
  bool scormLaunchResize = false;
  string scormRelativeHtmlPath = string.Empty;


  List<ScormModuleInfo> modules = new List<ScormModuleInfo>();

  foreach (var directory in Directory.EnumerateDirectories(scormRootDir))
  {
    ScormModuleInfo module = new ScormModuleInfo();
    //more code
  }  
 }

私からしてみれば:

   <% int idx = 0;
   foreach (var module in Model)
   { %>
      //lists names of the folders in the ScormPackages directory
   }

ここに画像の説明を入力してください

では、この場合、ページ付けをどのように処理しますか?

ありがとう

4

1 に答える 1

1

モジュールリストのクラスのSkipおよびTake拡張メソッドを使用して、リストをページ分割できます。Enumerable

以下は、これを行う方法を示す完全なコンソールアプリケーションです。

class Program
{
    static void Main(string[] args)
    {
        IList<string> lst = new List<string>
        {
            "One",
            "Two",
            "Three",
            "Four",
            "Five",
            "Six",
            "Seven",
            "Eight",
            "Nine",
            "Ten",
        };

        int pageSize = 3;
        int page = 2;

        var pagedLst = lst
                       .Skip((page - 1) * pageSize)
                       .Take(pageSize);

        foreach (string item in pagedLst)
        {
            Console.WriteLine(item);
        }
    }
}

コントローラのアクションメソッドでページングと並べ替えを行い、並べ替えられたリストをビューに渡します。これにより、ビューコードは変更されません(ビューが実際にページングと並べ替えを実行する必要はありません)。

アクションメソッドのコードは次のようになります。

List<ScormModuleInfo> modules = new List<ScormModuleInfo>();

var pagedModules = modules
                   .Skip((page - 1) * pageSize)
                   .Take(pageSize);
于 2013-03-07T11:16:37.097 に答える