RouteValueDictionary переопределен контекстом - PullRequest
4 голосов
/ 25 ноября 2008

Если у вас есть маршрут:

routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _
  New With {.filter1 = "", .filter2 = "", .filter3 = ""})

затем в представлении, удовлетворенном шаблоном маршрута с URL-адресом /member/search/dev/phil/hoy, при попытке создать другой URL-адрес маршрута только с filter1 существующим, т.е.

<%=Url.RouteUrl(New RouteValueDictionary(
  New With {.controller="member",.action="search", .filter1="dev"}))%>

результат - текущий маршрут /member/search/dev/phil/hoy, а не ожидаемый обрезанный маршрут /member/search/dev

Мне удалось обойти проблему, используя метод RouteTable.Routes.GetVirtualPath напрямую, но кто-нибудь знает, почему он работает таким образом, или это, возможно, ошибка?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

C в MVC не обозначает сложный ...

Я полагаю, что вам не следует использовать URL-адреса Маршруты для достижения этого типа функциональности - вам гораздо лучше передавать такие данные как POST или GET (я предпочитаю первые, более аккуратные в кучах) в CONTROLLER и затем сортировать бизнес логика оттуда.

Сколько времени пройдет, прежде чем ваши Карты маршрутов станут совершенно громоздкими с многочисленными различными комбинациями поиска?

0 голосов
/ 08 декабря 2010

Не могли бы вы попробовать следующее и посмотреть, работает ли оно.

Поместите это,

routes.MapRoute("search", "{controller}/{action}/{filter1}/", _
  New With {.controller="member",.action="search", .filter1="dev"})

.. до,

routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _
  New With {.filter1 = "", .filter2 = "", .filter3 = ""})

Специфично для универсального.

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