2017-04-16 13 views
2

アクションメソッドの入力に問題があります。MVC入力アクションメソッド

私はこのコードを持っている:

public ViewResult List(int page_number = 1) { 

    ProductsListViewModel model = new ProductsListViewModel { 

     Products = repository.Products 
     .OrderBy(m => m.ProductID).Skip((page_number - 1) * PageSize) 
     .Take(PageSize), 
     PagingInfo = new PagingInfo { 

      CurrentPage = page_number, 
      ItemsPerPage = PageSize, 
      TotalItems = repository.Products.Count() 


     } 
    }; 

    return View(model); 

} 

を、私はこのルートの設定を持っている:http://localhost/Page2またはhttp://localhost/Page3 page_numberの値は常に1です:

public static void RegisterRoutes(RouteCollection routes) { 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: null, 
     url: "Page{page}", 
     defaults: new { Controller = "Product", action = "List" } 
    ); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Product", action = "List", id = UrlParameter.Optional } 
    ); 
} 

私はURLを入力し

。 なぜですか?

答えて

1

URLテンプレートのテンプレートパラメータは、アクションのパラメータ名と一致する必要があります。

したがって、設定をアクションに合わせて変更してください。

routes.MapRoute(
    name: null, 
    url: "Page{page_number}", 
    defaults: new { Controller = "Product", action = "List" } 
); 

または構成に

public ViewResult List(int page = 1) { ... } 
に一致するようにアクションを変更