2017-10-13 70 views
1

我在PagedList中使用了功能齊全的分頁器,並且它正在按照預期生成索引頁面的查詢字符串。用自定義URL替換由PagedList生成的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  

我希望它看起來像這樣: -

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

OR

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

任何援助,將不勝感激,因爲我仍然是新的! 再次感謝!

回答

0

Startup.cs文件,方法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裝飾器。 –

相關問題