ASP.NET MVC路由:与自定义路由冲突的操作名称

时间:2010-11-02 17:46:21

标签: asp.net-mvc custom-routes

我全都,

previous question中,我询问了如何定义处理以下网址的自定义路由:

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

我有一个User对象和一个UserProfile对象,但只有一个UserController,我希望能够用于对这两个对象的操作。我已经在UserController中有一个名为Edit的方法来处理用户的编辑。但是我还需要一种在UserProfile上进行编辑的方法。我的路由问题的答案是以下路线:

routes.MapRoute(
    "ProfileleRoute", // Route name
    "User/Profile/{action}/{userProfileID}", // URL with parameters
    new { controller = "User", action = "Index" } // Parameter defaults
);

但是考虑到自定义路由,我应该在哪里声明UserProfile的编辑操作,以及应该调用什么?似乎我无法在UserController中编写另一个名为Edit的方法,因为我已经有一个处理用户编辑的方法。

所以我觉得我最终需要两个Edit操作来处理以下路径:“User / Edit”和“User / Profile / Edit”。我该如何解决这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:0)

当框架要选择要执行的操作时,首先使用与请求匹配的HttpPost或HttpGet属性检查所需名称的操作,如果不是以这种方式选择操作,则选择与之匹配的任何操作名称。 因此,如果您有两个具有相同名称但没有HttpPost或HttpGet属性的操作,则无法控制操作将会执行。