1

你好,我刚开始学习mvc2和im有一个与参数页面的默认值有关的问题(你可以看到下面的方法)。控制器方法中的参数默认值覆盖所有内容

无论我在URL中输入什么,它总是0。例如,这

h.ttp://本地主机:52634 /产品/列表/ 2

应显示2页,但在调试模式下的页面参数为0,所以我总是得到的第一页列表在我看来。

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

我错过了什么?

//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); 
    } 

回答

2

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

routes.MapRoute("MyRoute", "{controller}/{action}/{page}", 
    new { controller = "Foo", action = "List", page = UrlParameter.Optional }); 
+0

omg即时通讯这样做,我只是盯着我的global.asax路由甚至没有通知{id}:P感谢您的回答:D – Kimpo 2010-08-26 15:56:31

+0

@Kimpo - 没问题! – GenericTypeTea 2010-08-26 16:00:13

2

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

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

而且在任何地方使用,而不是页面VAL。这应该工作。如果没有,这是路由问题。

HTH。

+0

查看GetValueOrDefault()的行为很有帮助。 – RacerNerd 2013-05-16 23:31:19