2009-08-27 67 views
0

我的頁面傳遞函數無法正常工作。出於某種原因,當我嘗試將當前pageindex +1傳遞到同一頁面以顯示下一個頁面時,它並不是這樣。路由鏈接傳遞頁面

<% if (Model.Users.HasNextPage) { %> 

    <%= Html.RouteLink(">>>", "Users", new { page = (Model.Users.PageIndex +1) })%> 

    <% } %> 

如果我只用:「>>>」,「用戶),它的工作原理,但接下來的頁面功能不工作,因爲它不會給下一個值。

如果我調試Model.Users.PageIndex它的值爲0時,它加載頁面(它應該有)。

不知怎的,它不喜歡「新」 -thingy末

我對瑞典的錯誤,但它抱怨一些事情沒有找到對用戶的位置,或如何路徑/路由/參考它的集合。

的ActionResult的樣子:

public ActionResult Users(int? page){ 
     const int pagesize = 10; 

     var pagnatedUsers = new PaginatedList<User>(_us.GetUsers(), page ?? 0, pagesize); 

     return View("Users", new UserAdminEditViewModel { Users = pagnatedUsers }); 
    } 

在此先感謝 /M

回答

1

我會在你的第二個參數Html.RouteLink猜「用戶」應該是指你的控制器行動名稱。 RouteLink實際上沒有(字符串linkText,字符串actionName,對象routeValues)的重載,這是您嘗試提供的內容。

您正在調用的重載實際上是要求第二個參數中的routeName,並且您沒有定義這樣的路由!

試試這個

Html.RouteLink(">>>", new { controller="Home", action="Users", page = (Model.Users.PageIndex +1) })%> 

替換爲您的實際控制人的名字。


更新/響應:我試圖解釋爲什麼你的代碼沒有按預期工作。事實上,如果您使用ActionLink而不是原始參數也是一種解決方案 - 並且可能更好,因爲它似乎是您想要的。

RouteLink和ActionLink在封面下基本相同(它們最終都調用實際生成鏈接的相同底層代碼)。區別僅在於使用情況 - RouteLink可幫助您根據路由配置(例如路由名稱)生成鏈接,ActionLink可用於根據您的控制器操作(例如,通過操作名稱)進行鏈接。而且有很多重疊,你可以用完全相同的方式使用它們。

0

我從Nerddinner例子中得到了RouteLink代碼。現在,當我改變爲ActionLink而不是RouteLink時,它就起作用了。

不太確定使用ActionLink或Kurt描述的方式有何區別。

+0

查看我關於RouteLink和ActionLink的更新答案 – 2009-08-28 12:37:05