Сортировка, фильтрация и разбиение на страницы в ASP.NET MVC - PullRequest
1 голос
/ 25 января 2010

Каков наилучший подход для реализации этих функций и какая часть проекта будет задействована?

Я вижу пример сетки JavaScript, но я говорю об общем подходе, который лучше всего подходит для архитектуры MVC.

Я рассмотрел настройку маршрутов и моделей для реализации этих функций, но у меня нет четкого представления о том, является ли это правильным подходом к реализации таких функций. С одной стороны, я думаю, что если мы поместим логику в маршруты (item / page / sort /), у нас были бы такие преимущества, как создание закладок и отказ от JavaScript. С другой стороны, если мы используем сетки JavaScript, мы можем иметь поведение, подобное представлениям старой школы в веб-формах ASP.NET.

Я считаю, что использование помощников HTML может быть полезно для подкачки страниц, но я понятия не имею, хороши они для сортировки или нет. Я посмотрел на плагины jQuery, tableSorter и быстрый поиск , но они работают только с текущими данными и не помогают в реальной сортировке и фильтрации, которые могут потребоваться прикоснуться к базе данных. У меня есть некоторые мысли об использовании этих инструментов бок о бок с AJAX, чтобы получить что-то, что работает, но я понятия не имею, предпринимаются ли еще где-нибудь подобные усилия.

Другим подходом, который я рассмотрел, было использование динамических данных в веб-формах, но я не нашел никаких предложений относительно того, является ли это хорошей идеей для интеграции MVC и DD. Я знаю, что реализация фильтрации и сортировки для отдельного случая проста (хотя у нее есть некоторые проблемы, такие как использование Dynamic LINQ, который еще не является стандартным подходом), но создание инструмента сортировки или фильтрации, который работает во всех случаях, - идея находясь в поиске. (Возможно, это потому, что я хочу иметь что-то под рукой, когда разработчики веб-форм задаются вопросом, почему я пишу один и тот же код каждый раз, когда я хочу реализовать сценарий сортировки для разных сущностей).

Ответы [ 3 ]

3 голосов
/ 25 января 2010

Вот мое решение на основе jqGrid: http://sprokhorenko.blogspot.com/2010/01/jqgrid-mvc-new-version-sources.html

Он немного специфичен для S # arp Architecture и NHibernate, поэтому я не уверен, подходит ли он вашим потребностям. Но он модульный, так что, например, легко настроить базовую реализацию репозитория.

По сути, это просто jqGrid со всеми его плюсами и минусами, но интегрированный в MVC:

  1. контролирует все форматирование и редактирование с атрибутами в ViewModel
  2. автоматические запросы, сортировка / фильтрация / обработка пейджинга
  3. автоматическая обработка CRUD
  4. Может работать как с базой данных, так и со списком репозиториев
  5. нет маршрутов / ссылок, которые можно добавить в закладки ...

Все, что вам нужно, это предоставить ViewModel атрибут и переопределить пару шаблонных методов CRUD (может быть всего лишь InternalConstructEntity ().

0 голосов
/ 25 января 2010

Я лично использую jQuery DataTables . Это очень просто и имеет четко определенный запрос на стороне сервера. Я написал плагин для jQuery DataTables с C # и MVC . Он использует стандартный запрос jQuery DataTables и соответственно обрабатывает экземпляр IQeryable.

0 голосов
/ 25 января 2010

Вы можете проверить MVContrib, у них довольно хорошая поддержка сетки. http://www.codeplex.com/MVCContrib

Для LOB-приложений Telerik Controls может быть хорошим решением.

...