用于分页和日期的 mvc 路由

mvc routing for pagination and dates

我有一个路由系统,可以不传递日期或带页码的日期。

routes.MapRoute(
            name: "ArticlesArchiveFilter",
            url: "Article/Archive/{searchDate}/{pageNumber}",
            defaults: new { controller = "Article", action = "Archive", searchDate = UrlParameter.Optional, pageNumber = "" }
        );

        routes.MapRoute(
           name: "ArticlesArchiveBasic",
           url: "Article/Archive/{pageNumber}",
           defaults: new { controller = "Article", action = "Archive", pageNumber = "" }
       );

我的问题是,当传递 url 时,带有日期时间和页码的 url 路由可以工作,但没有日期时间就不行,因为页码始终默认为 1。

我的控制器看起来像这样...

 public ActionResult Archive(DateTime? searchDate, int pageNumber = 1)
    {
        ArticleListViewModel model = new ArticleListViewModel();
        model = new ArticlePageManager().Filter(searchDate, pageNumber: pageNumber).MapToList();

        return View(model);
    }

有人知道我该如何解决这个问题吗?

试着改变你的路线。

routes.MapRoute(
    name: "ArticlesArchiveFilter",
    url: "Article/Archive/{pageNumber}/{searchDate}",
    defaults: new { controller = "Article", action = "Archive", searchDate = UrlParameter.Optional, pageNumber = "" }
);