2009-09-01 58 views
2

我想要一條類似於以下的路線:www.abc.com/companyName/Controller/Action/Id 但是,所有公司名稱都需要映射到相同的「基本」控制器,請注意名稱是什麼。我只需要公司名稱來進行身份驗證。虛榮MVC路線?

此外,如果沒有提供companyName,我需要映射到不同的控制器集合。

我該怎麼做?我也很欣賞一個很好的路由資源,所以我不必提問這樣的問題。

回答

4
routes.MapRoute(
    "CompanyRoute",           
    "{companyName}/{controller}/{action}/{id}",   
    new { controller = "MyBaseCompanyController", action = "Index", id = "" } 
); 

routes.MapRoute(
    "NoCompanyRoute", 
    "{controller}/{action}/{id}", 
    new {controller = "DifferentDefaultController", action = "Index", id = "" }); 

路由是一個相當複雜的話題,但它在Professional ASP.Net MVC 1.0中覆蓋得很好。對於網上的資源,我建議starting here,然後回來堆棧溢出;)

+0

這就是我的想法。但是,每當我嘗試時,我都會收到「資源未找到」錯誤。我不知道爲什麼它不符合我的路線。有任何想法嗎? – 2009-09-01 04:38:59

+0

嘗試添加公司名稱的默認值:new {companyName =「」,controller =「MyBaseCompanyController」...} – 2009-09-01 04:47:01

+0

嗯......我可能必須看到您的路線映射代碼和您的控制器類。您確定您的默認操作方法與您的默認控制器類相匹配? – womp 2009-09-01 04:47:17

0

去的Global.asax.cs,並在的RegisterRoutes()方法中的「默認」路線之前添加以下路由:

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