2010-11-02 155 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