2017-10-13 32 views
1

完全に機能するページャでPagedListを使用しており、インデックス付きページのクエリ文字列を期待通りに生成しています。PagedListによって生成されたURLのクエリ文字列をカスタムURLに置き換えます。

URLをカスタマイズしてクエリ文字列を削除し、代わりに別のRouteパラメータを追加する方法があるかどうかを知りたいと思っていました。

は私のビューである: - ここ

@model PagedList.Core.IPagedList<ActionAugerMVC.Models.Review> 
@using PagedList.Core.Mvc; 
@addTagHelper *, PagedList.Core.Mvc 

<div id='Paging' style="text-align:center"> 
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount 
    <pager class="pager-container" list="@Model" 
      options="@PagedListRenderOptions.TwitterBootstrapPager" 
      asp-action="Index" asp-controller="Review" /> 
</div> 

そして、私のコントローラのアクションである: -

[Route("Reviews/calgary-tech-reviews")] 
public IActionResult Index(int? page) 
{ 
    int pageSize = 10; 
    int pageIndex = 1; 
    pageIndex = page.HasValue ? Convert.ToInt32(page) : 1; 

    var review = unitOfWork.ReviewRepository.GetAll(); 
    return View(review.OrderByDescending(m=> m.Date).ToPagedList(pageIndex,pageSize)); 
} 

現在のURLは次のようになります -

http://localhost:63613/Reviews/calgary-tech-reviews?page=2  

そしてI次のようにします: -

私はまだ新しいこの午前として
http://localhost:63613/Reviews/calgary-tech-reviews/page-2/ 

OR

http://localhost:63613/Reviews/page-2/calgary-tech-reviews/ 

どのような援助は、いただければ幸いです! もう一度ありがとう! Startup.csファイルで

答えて

0

、方法Configure、そのパラメータを取得するためにルートを追加します。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    //... 
    app.UseMvc(routes => 
    { 
     //... 
     routes.MapRoute(
      name: "paged", 
      template: "{controller=Reviews}/{action=Index}/page/{page=1}"); 
    }); 
} 

今、あなたは開くことができます:http://localhost:63613/Reviews/calgary-tech-reviews/page/2/

を私はpage/{page=1}で、page-{page=1}で動作するように設定できませんでした。 pageは、最初のケースでは常に0を返します。

ご協力いただける場合は、お知らせください。 =)

+0

私はそれを試してみましょう、あなたの助けに本当に感謝します。 –

+0

Routeデコレータを削除しても、何も影響を与えていないようです。 –

関連する問題