Par exemple, cette liste contient une vue d'ensemble des documents et des besoins permettant la pagination. La liste est utilisée sur l'ensemble du site. Selon le contexte dans lequel il est utilisé, il a besoin des données d'une source différente. Par exemple, il peut être utilisé sur une page «groupe», où il doit charger les documents pour le groupe. Et il peut être utilisé sur une page «événement», où il doit charger les documents pour l'événement.Liste paginable réutilisable dans ASP.NET MVC2
Les deux situations peuvent également avoir un filtrage différent sur les documents contenant la page.
Si la liste ne possède pas de sources de données différentes, je pourrais facilement utiliser Html.RenderAction et commencer à travailler à partir de là. Mais dois-je fournir la liste avec des documents dans l'appelant, ou la liste doit-elle charger les documents, en fonction de filter/paging/... viewdata?
Intéressant, mais lors de l'exécution Take(), le référentiel sous-jacent est appelé, puis le SQL est exécuté (pourrait travailler, je m en utilisant Linq à NHIbernate). Mais n'est-ce pas une approche étrange d'utiliser le Skip() et Take() dans le frontend? – Bertvan
Ah, vous avez trouvé un point faible dans ma réponse. Et vous avez complètement raison, bien sûr. La pagination n'est pas vue-logique et ne devrait pas être dans la vue. Je pense que l'approche de base de l'utilisation d'une vue partielle qui peut rendre différentes données au lieu de Html.RenderAction est toujours valide, mais peut-être que nous pouvons pousser la pagination-logique dans une classe de vue. – Mendelt
Ok, à ce stade, j'ai commencé à faire une approche similaire à celle que vous mentionnez dans votre réponse (DocumentPager). Avec cette différence, il est responsable du chargement des documents via le référentiel iso via un IEnumerable. Question suivante cependant: qu'en est-il du lien «Suivant» et «Précédent»? :) – Bertvan