2010-06-22 3 views
1

Я следующий URL в виду:MVC опускаем дополнительная страница параметров

/restaurants/italian/miami.html 
/restaurants/italian/miami-p2.html 

Используя эти маршруты

routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html", 
       new { controller = "Branch", action = "Index" }); 
routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index", page = 1 }); 

Теперь мой вопрос, я хочу сделать "-p {страница}" часть необязательного URL-адреса, а не только параметра {page}. Таким образом, я могу использовать один маршрут, а также использовать его для сопоставления исходящих URL-адресов с Url.RouteUrl(RouteValueDictionary) (который затем автоматически удаляет часть страницы, если параметр страницы в словаре равен 1).

+0

* Почему вы добавляете '.html' на свои маршруты? Весь маршрут маршрутов - * не * указывает на физическую страницу. –

+0

Мои мысли точно, но это не мое решение, к сожалению, – Fabian

ответ

0

Для того, чтобы достичь этого мне нужно 3 маршрута:

routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index" }, 
       new { page = "1" }); 

routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html", 
       new { controller = "Branch", action = "Index" }); 

routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index", page = 1 }); 

Таким образом, я могу сопоставить все URLs въездного со вторым и третьим маршрутом и исходящих с первым и второй.

+0

Все еще надеемся, что есть лучшее решение ... – Fabian

1

Я не уверен, что хорошо понимаю, что вы хотели бы, но почему-то я думаю, что использование некоторой regular expression constraint может решить вашу проблему. Может быть, как-то вроде этого:

routes.MapRoute(null, "{category}/{branch}/{citywithp}{page}.html", 
      new { controller = "Branch", action = "Index" }, 
      new {citywithp = @"p-\d+$" }); 
+0

+1 Это неправильный ответ, но он заставил меня думать – Fabian

+0

Хорошо, я рад, что это помогло как-то ... :) – apolka

Смежные вопросы