2017-10-13 66 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装饰器。 –

相关问题