2

你好,我刚开始学习mvc2,参数页面的默认值有问题(你可以看下面的方法)。

无论我在 URL 中输入什么,它始终为 0。例如这个

h.ttp://localhost:52634/Products/List/2

应该显示第 2 页,但在调试模式下,页面参数为 0,所以我总是在我的视图中获取列表的第一页。

当您开始一个新的 mvc2 项目时,我正在使用全局 asax 中的预定义标准路由。

我错过了什么吗?

//This is the ProductsController

   public ViewResult List(int page = 0)
    {

        var products = productsRepo.Products()

   //send in source, current page and page size
        productList = new PagedList<Product>(products, page, 10);

        return View(productList);
    }
4

3 回答 3

3

删除“= 0”,然后执行:

public ViewResult List(int? page)
{
    int val = page.GetValueOrDefault(0);

并在任何地方使用 val 而不是 page。那应该行得通。如果不是,那就是路由的问题。

HTH。

于 2010-08-26T15:47:27.120 回答
3

这是一个路由问题,默认路由指定一个id属性,您正在使用一个名为page. 我自己是 MVC 的新手,但是在默认路由之前添加了这个路由:

routes.MapRoute("MyRoute", "{controller}/{action}/{page}",
    new { controller = "Foo", action = "List", page = UrlParameter.Optional });
于 2010-08-26T15:50:51.763 回答
0

I know it's very late to answer. As default route for MVC is following

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

which is expecting that parameter name should be id. Now you have 2 options here either change your parameter name to id or the other option is define your own route in route.config file which is under App_Start folder.

于 2019-05-16T06:23:41.187 回答