在MVC

2012-07-27 47 views
1
創建特殊的搜索引擎優化路線

我有以下實體:在MVC

公司 - >博客 - >文章 - >評論

每家公司都有一個博客(或博客),其中有文章和評論。

的網址會像這樣創建:

{控制器}/{行動}/{ID}

博客/編輯/ 1

我想之前把公司它,對於搜索引擎優化的目的,它更符合邏輯:

SampleCo/Blog/Edit

SampleCo也可能有類似的網頁網站:

SampleCo/myPage.vbhtml

什麼是去了解它的最好方法?感謝您的幫助。

注:我已經看到了多租戶的鏈接,但我不認爲這將是必要的。我不需要單獨的實例,因爲一切都是外鍵(公司到博客,博客到文章,文章到評論)。

回答

1

相信我,你不想用默認路由,它會給你一個頭痛的爛攤子,你可以保留默認,因爲它是,並且創建一個輔助路線像:

routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

    routes.MapRoute(
       "SEORoute1", // Route name 
       "{company}/{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

而當你需要使用的路由只需使用這個助手:

@Html.RouteLink("LinkText","SEORoute1",new { action = "Index", controller = "Home", company = item.Name, id = item.Code }) 
2

在的global.asax.cs你應該能夠取代這一默認路由:

 routes.MapRoute(
      "Default", // Route name 
      "{company}/{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

唯一的問題是,這也適用於所有的要求,因此,如果您使用/需要的默認路由網站的其他部分,你必須找到另一種解決方案。

在你的控制器,你將有:

public class BlogController : Controller { 
    public ActionResult Edit(String company, int id) { 
    } 
} 
+1

通過使用狂勝e確保{company}是有效的公司(文本或id)並且{controller}是有效的控制器並且{action}是該控制器上的有效操作的約束條件,您可以輕鬆地使該路由僅適用於某些請求。 – 2012-07-27 14:55:08