2009-08-27 13 views
0

私のページャー機能が動作するのに問題があります。何らかの理由で、現在のpageindex +1を同じページに渡して次のページを表示しようとしたときのようなことはありません。routelinkのページを渡す

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

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

    <% } %> 

私だけを使用する場合:「>>>」、「ユーザー)それは動作しますが、それは次の値を割り当てていないので、次のページの機能は動作しませんが。

Model.Users.PageIndexをデバッグすると、ページがロードされるときに値0が設定されます。

どういうわけか、それは私がスウェーデンのエラーを持っているが、それは、ユーザーの場所へのパス/ルート/参照が見つからないについて何かを不平を言うか、どのようにエンド

で「新しい」-thingyが好きではありません。そのセット。

のActionResultは次のようになります。私はHtml.RouteLinkにあなたの二番目のパラメータで、「ユーザー」を推測するつもりです事前に感謝 /M

答えて

1

があなたのコントローラを参照することになっている

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

アクション名。 RouteLinkは実際にあなたが提供しようとしていると思われるもの(string linkText、文字列actionName、オブジェクトrouteValues)のオーバーロードを実際には持っていません。

呼び出し中のオーバーロードは、実際にはルート名の2番目のパラメータを要求しており、このようなルートは定義されていません。

は、実際のコントローラ名に置き換えて、この

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

を試してみてください。


更新/応答:コードが期待どおりに機能しない理由を説明しようとしていました。実際、ソリューションでもある元のパラメータでActionLinkを使用すると、それがあなたの望むものと思われるので、おそらくより良いものになるでしょう。

RouteLinkとActionLinkは基本的にはカバーの下で同じです(両方とも実際にリンクを生成する同じ基本コードを呼び出すことになります)。その違いは、使用のコンテキストのみです.RouteLinkは、ルーティング設定(ルート名など)に基づいてリンクを生成するのに役立ちます。また、アクションリンクには、コントローラのアクションに基づいたリンク(アクション名など)があります。そして、まったく同じ方法でそれらの両方を使用することができるオーバーラップがたくさんあります。

0

Nerddinnerの例からRouteLinkコードを取得しました。そして今、私がRouteLinkの代わりにActionLinkに変更したとき、それはうまくいった。

ActionLinkを持っているか、Kurtが説明している方法との違いはわかりません。

+0

RouteLinkとActionLinkに関する最新の回答を参照してください –

関連する問題