2014-02-17 2 views
0

У меня есть некоторые проблемы с управлением хорошим URL-адресом для моего сайта..NET URL с категориями

У меня есть 3 models: Town, Restaurant, Food.

TownController использует TownService и Index показывает все города (другие методы Edit, Create, Delete)

Похожая с RestaurantController - с использованием RestaurantService и Index показывает все Restaurants в выбранной Town)

FoodController - с использованием FoodService и Index все Foods в выбранном Restaurant

URL-адреса:

/Town - показывает все towns

/Restaurant/Index/1 - показывает все restaurants в Town с ID = 1

/Food/Index/1 - показывает все foods в Restaurant с ID = 1

Только /Town прекрасно URL, отдых не очень хорош. Во-вторых, должны быть больше как /Town/1 но так как RestaurantController показывает все restaurants в Town она должна быть написана /Restaurant/Index/1.

Есть ли способ изменить эту конструкцию? Также обратите внимание, что клиент настаивает на том, чтобы не использовать настраиваемые маршруты/маршрутизацию атрибутов.

Лучший SEO в конце будет /Town/TownName/RestaurantID (или даже restaurantName), но это не так важно, если вы могли бы помочь мне с предыдущим запросом.

Спасибо.

+3

Этот вопрос не соответствует теме, потому что речь идет о SEO –

ответ

1

Вам необходимо изменить и добавить пользовательские маршруты в RouteConfig.cs в папке App_Start. Вы должны иметь следующий маршрут по умолчанию в методе RegisterRoutes

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 

Этот маршрут означает, что если вы не передать ему ничего для контроллера, действие или идентификатор будет идти в/Home/Index /, если вы передаете его контроллер будет доставлен в/Town/Index. Если вы зарегистрируетесь следующий маршрут ДО маршрута по умолчанию (они получают пытались в порядке, так что маршрут по умолчанию всегда должен быть последним)

routes.MapRoute(
      name: "Restaurant", 
      url: "Town/{id}", 
      defaults: new { controller = "Restaurant", action = "Index", id = UrlParameter.Optional } 
     ); 

это будет захватить любой URL, который имеет «/ Town /» и целое число в то же время позволяя «/ Town /» самостоятельно переходить к контроллеру Town.

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