Используя ASP.NET MVC2, Как заставить фильтры работать со взломанными URL? - PullRequest
3 голосов
/ 14 февраля 2010

Подумайте о Новая модель развертывания электронной коммерции New Egg для запуска, где ключевые слова на панели навигации дополнительно ограничивают отображаемый в данный момент список продуктов с каждым выбором.

Я установил домоискатель с Маршрутами как это:

http://{website.com}/{Housetype}/{PriceLow}-{PriceHigh}
http://mysite.com/Residential/180000-230000
http://mysite.com/Commercial/300000-500000

Но теперь я хочу добавить ссылки на боковую навигацию, которые еще больше ограничивают контент:

1 Bedroom
2 Bedroom
4 Bedroom

1-4 Acres
4-10 Acres
10+ Acres

Как мне передать и сохранить выбор между кликами с помощью MVC? Я думаю, что мои варианты:

  1. Продолжайте добавлять именованные параметры в строку запроса, например / {acres}: {low} - {high}, но для этого потребуется наличие всех параметров, я не смогу выбрать более одного критерия, или я нажму максимальная длина строки запроса.
  2. Как только я узнаю {housetype} и {ценовой диапазон}, перейдем к совершенно другой стратегии, возможно, передавая объект (например, DTO), который будет .AddCriteria ("Acres", ".gt.", "1" ); .AddCriteria ("Acres", ".lt.", "4") и т. Д .... Это звучит очень сложно
  3. Что-то еще?

Опять же, ищем ответы для начинающих, самый распространенный способ (почти шаблонный способ) для отправки критериев фильтрации и сортировки от клиента в ASP.NET MVC. Ссылки тоже полезны.

1 Ответ

1 голос
/ 14 февраля 2010

Несколько недель назад я создал анализатор выражений URL, который будет фильтровать IQueriable на основе выражений из URL. Вот сообщение в блоге для объяснения . По сути, вы можете создавать свои собственные выражения и вставлять их в синтаксический анализатор ... или вы можете сделать это стандартным способом IQueriable с помощью чего-то вроде:

Вот ссылка на код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...