2014-02-17 78 views
0

我的網站管理好看的網址時遇到一些問題。.NET類別的網址

我有3 modelsTown,Restaurant,Food

TownController是使用TownServiceIndex顯示所有城鎮(其它方法是EditCreateDelete

類似的是與RestaurantController - 使用RestaurantServiceIndex顯示所有Restaurants在選擇Town

FoodController - 使用FoodServiceIndex顯示全部選中FoodsRestaurant

網址:

/Town - 顯示所有towns

/Restaurant/Index/1 - 顯示Town所有restaurantsID = 1

/Food/Index/1 - 顯示Restaurant所有foodsID = 1

只有/Town是好的網址,休息不好。其次應該更像/Town/1但由於RestaurantController是表示Town所有restaurants必須書面/Restaurant/Index/1.

有沒有辦法改變這種結構? 另請注意,客戶端堅持不使用自定義路由/屬性路由。

最終SEO最終會是/Town/TownName/RestaurantID(或甚至restaurantName),但如果你可以幫助我以前的請求,這並不重要。

謝謝。

+3

這個問題似乎是離題,因爲它是關於搜索引擎優化 –

回答

1

您需要修改並向App_Start文件夾中的RouteConfig.cs添加一些自定義路由。你應該在的RegisterRoutes方法如下默認路由

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

這條路線意味着,如果你通過它沒有爲控制器,動作或ID就會去/首頁/索引/,如果你傳遞一個控制器它將得到/ Town/Index。如果您註冊了以下路線默認路由之前(它們會試圖順序,因此默認路由應該始終是最後一個)

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

這將捕獲有任何URL「/鎮/」和一個整數同時仍然讓'/ Town /'自己去Town控制器。