2010-11-02 169 views
4

我已經在線尋找這個問題的答案,但我真的似乎無法找到一個很好的MVC路由參考。ASP.NET MVC路由:如何定義自定義路由

我有我的User對象的UserController。人們可以在用戶上編輯,保存,查看等,所以我在該控制器中有處理每一個的操作。這非常簡單。但是我最近創建了一個新的UserProfile對象,可以編輯,查看等。我不想爲UserProfile創建一個全新的控制器,而是想使用現有的UserController。因此,要查看用戶的個人資料,我想的網址是:

http://www.example.com/User/Profile/{userProfileID} 

以及編輯,我想的網址是:

http://www.example.com/User/Profile/Edit/{userProfileID} 

每個在UserController的這些行動將返回一個不同的視圖頁面。

我將如何去定義路線來處理這個結構?非常感謝。

回答

11

在您的RegisterRoutes Global.asax文件()方法執行以下操作:

routes.MapRoute(
    "ProfileRoute", 
    "User/Profile/{action}/{userProfileID}", 
    new { controller = "User", action = "Index" }); 

正如評論指出...這一定要來的默認路由前。

+3

此外,作爲它發現我以後的供參考,它必須在默認路由 – 2010-11-02 17:17:48

+0

之前宣佈非常好的點...編輯我的答案。 – Dismissile 2010-11-02 17:26:52

+0

因此,這條路由看起來像處理/ User/Profile/Edit/{userProfileID}的情況,因爲我可以在EditControl的UserController中執行一個操作,但是查看配置文件怎麼辦?我不需要編寫一個名爲View的操作方法,或者可以做到這一點的東西?我將如何擁有/ User/Profile/{userProfileID}?另外,爲了能夠處理Edit案例,在定製路由的情況下,UserController中的操作需要命名?它看起來像「索引」,但我怎麼能稱它爲'編輯'? – 2010-11-02 17:27:20