-2

Troygoode の PagedList を使用して、ASP.NET MVC アプリケーションhttp://nuget.org/packages/PagedList.Mvcでページ分割されたリンクを出力します。

コントローラー内でページ化されたリストを作成し、それをビューに渡します。ビューは @Html.PagedlistPager を使用して、ページ分割されたリンクの html を生成します。これにより、/Store?search=bla&page=1、/Store?search=bla&page=2 などのような一連のリンクが生成されます。

可能な場合は JavaScript コードを html から分離する必要があるということはかなり同意されているため、別の JavaScript ファイル内のすべてのページ付けされたリンクにクリック ハンドラーを追加します。もちろん、これらのクリック ハンドラー内で ajax リクエストを実行してページ X を取得します。これはサーバー側でレンダリングされ、クライアント ページの div にダンプされます。これには、新しいページ付けされたリンクが含まれます。

リクエストごとに新しいページ付けされたリンクを生成しているので、新しい検索が行われるか、ページが変更されるたびに、これらのクリック ハンドラーを追加します。これは、ajax の OnSuccess イベント ハンドラーから行います。

これはうまくいきます。通常の href にフォールバックするため、JavaScript が無効になっている場合でも、ユーザーはページをナビゲートできます。最高級の優雅な劣化。

ただし、ジョブをログに記録するときにユーザーがストアを選択する必要がある私のアプリの別の部分があり、厳密には ajax のみです。この場合、ページ分割されたリンクの href を「javascript:void(0);」にする必要があります。問題は、これらのリンクのクリック ハンドラーを追加するときに、ajax 呼び出しがどの URL に投稿されるべきかを知る方法がなくなったことです。

リンクのテキスト値 (「1」、「2」、「3」など) を使用することもできると思いますが、「次へ」と「前へ」のリンクはどうでしょうか。さらに、このようにするのは間違っていると感じます。

理想的には、PagedList.MVC には、各ページ リンクに data-page="X" 属性を配置するオプションがあり、これをクリック ハンドラーで使用できますが、そのようなオプションがそのような人気のあるサイトには存在しないという事実.net 拡張により、私が提案したソリューションは理想的または推奨されるソリューションではないと信じるようになりました。

私のアプローチは論理的ですか?または、これを行うより良い方法があります。PageList.MVC の標準ヘルパーの代わりに使用する独自のヘルパーを作成する必要がありますか? 以前にこれを行ったことがあり、彼らのアプローチに自信を持っている人からのガイダンスが必要です.

読んでくれてありがとう

4

1 に答える 1

0

私がプッシュした控えめな AJAX のサポートを見てみましょう。

https://github.com/TroyGoode/PagedList/issues/26#issuecomment-6471793

于 2012-06-21T01:03:39.017 に答える