0

私は、ページングされたリストクラスを使用して、nerddinnerチュートリアルのアイデアを使用する単純なページングシステムをアプリに設定しました。

   public class PaginatedList<T> : List<T>    {
        public int PageIndex {}
        public int PageSize {}
        public int TotalCount {}
        public int TotalPages {}

        public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize){}

        public bool HasPreviousPage {}

        public bool HasNextPage {}  }

ページングは​​機能し、次のコントローラーアクションのように、LINQ2SQLを介してデータベースから長いテーブルを取得するために使用しています。

  public ActionResult Index(int page=0)
    {
        const int pageSize = 10;

        var source = repo.SvaMjesta();
        var paginatedList = new PaginatedList<Mjesto>(source, page, pageSize);

        return View(paginatedList);
    }

ページングは​​正常に機能します。クエリタイプを使用している限り、どのページにもアクセスできます。URL:/ Admin / Mjesta?page = 2
これは避けたいので、/Admin/のような単純なURLを使用したいと思います。 Mjesta/ページ/2

その目的のために、私はAdminAreaRegistration.csにこのエントリを作成しました

       context.MapRoute(
            "pMjesta",
            "Admin/Mjesta/Page/{page}",
            new {controller = "Mjesta", action = "Index"});

しかし、/ Admin / Mjesta / Page / 2などのURLにアクセスしようとすると、それでも404エラーがスローされます。

私のアイデアは、最初はMapRoutingである種の一般的なページングエントリを作成することでした。そのため、同じ部分ビューを使用して、必要なすべてのリストでページングコントロールをレンダリングできますが、機能させることができなかったため、これを試しました。より具体的なアプローチですが、コントローラーにこのURL要求に反応させることができません。

何かアイデアや提案をお願いします。

4

2 に答える 2

2

URLが一致する可能性のあるそのエリアの他のルートはありますか?

たとえば、デフォルトのエリアルートがまだある場合:

context.MapRoute(
    "DefaultAreaRoute",
    "Admin/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = Url.Optional });

新しいルートの前にリストされている場合、優先URLが一致し、最初にこのルートを使用します。

于 2011-04-30T13:09:29.320 に答える
1
   context.MapRoute(
        "pMjesta",
        "Admin/Mjesta/Page/{page}",
        new {controller = "Mjesta", action = "Index", page = "{page}"});
于 2011-04-30T08:44:33.793 に答える