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