Каков подходящий дизайн маршрута для этого приложения ASP.NET MVC? - PullRequest
0 голосов
/ 16 ноября 2009

Мой URL http://server/region/section/item

Теперь, если кто-то перейдет на http://server/us/, я хочу отобразить страницу, чтобы выбрать раздел если кто-то перейдет на http://server/us/beer/, я хочу отобразить список всех сортов пива.

У меня вопрос: должен ли я иметь только 1 маршрут со значениями по умолчанию, а затем возвращать разные представления в зависимости от того, насколько заполнен URL-адрес, или я должен создать несколько маршрутов, идущих к одному и тому же контроллеру с различными действиями? или даже другие контроллеры, я просто хочу знать, какова лучшая практика.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2009

Типичный маршрут выглядит так:

http://www.domain.com/controller/action/id [Домен / контроллер / действие / ID]

В вашем случае это короткая часть: http://server/us/beer [Домен / контроллер / действие? /?]

Как сказал Роберт Харви, вы не хотели бы иметь действие для каждого продукта. Так как насчет чего-то вроде: http://server/us/product/beer [Домен / контроллер / действие / ID]

  • домен = сервер
  • controller = us (хотя, похоже, это не будет хорошим названием для контроллера)
  • action = product
  • id = beer

Затем вы разработаете представление продукта, которое будет показывать данные пива вашим посетителям.

Это не очень хорошо спроектировано, но, не зная вашей ситуации, кому-то будет трудно ответить на это. Надеюсь, это поможет.

0 голосов
/ 16 ноября 2009

В вашем конкретном случае "beer", вероятно, может быть фильтром для действия контроллера, а не для другого действия контроллера, и в этом случае вам потребуется только одна запись маршрута.

Не представляется разумным создавать стратегию, которая потребует от вас добавлять новые маршруты, методы контроллера и / или представления при каждом добавлении категории продукта. Если, конечно, вы не хотите сильно настраивать внешний вид и поведение каждой категории.

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