2012-12-27 81 views
1

所以,我已經通過關於MVC路由教程和書籍閱讀以及發揮它在我的項目,來的如何使用它一個非常堅實的理解來完成我想用它。ASP.NET MVC唯一的URL路由

但是,我要對付的東西,我不能完全弄清楚呢。

我想要完成的任務是爲每個客戶端並不像「http://mysite.com/client/1」唯一的URL。這個URL將瀏覽器帶到客戶端控制器,索引操作,ClientId = 1 ......顯然。

我希望做的是有像「http://mysite.com/Acme」的URL會做一個數據庫查詢找出哪些客戶有「Acme公司」的唯一名稱,然後重定向請求到客戶端控制器,索引視圖,並將ClientId設置爲客戶端名稱爲「Acme」的任何內容。

默認路由保持捕獲它並不能處理它。

任何想法?

+0

你可以分享你的路由樣子現在呢? –

+0

使用Glimpse http://getglimpse.com/並查看你的路線有什麼問題。 –

回答

1

我推薦使用Global Action Filter來實現這個目的,或者你可以創建一個靜態路徑路由到你的查找控制器(例如,/ lookup/{companyname}將路由到你的數據庫查找控制器)的路由。

+0

動作過濾器不起作用 - 永遠不會執行控制器動作來執行過濾器。 –

+0

您將需要執行全局動作篩選器。這將攔截所有請求。 –

1

如何 「http://www.mysite.com/Clients/{ClientName}」

routes.MapRoute(null, "Clients/{ClientName}", new{controller = "Clients", action = "Index"}; 

public class ClientsController : Controller 
{ 
    public ActionResult Index(string clientName) 
    { 
     var id = Db.GetClientIdBy(clientName); 

     // do your redirect... 
    } 
}  

還是我錯了?

+0

是的,這個想法是讓正常人有非常「記憶」的東西,並且客戶可以向他們的客戶做廣告。 –

+0

你說默認路由一直在捕捉它 - 你實際上是否需要其他的默認路由? –

+0

是的,我正在使用默認路由來處理其他所有事情。 –