0

这是我之前提出的几个问题的延续。我有一个名为 UserController 的控制器,我想处理对两种类型对象的操作:User 和 UserProfile。在其他操作中,我想在 UserController 中为这两个对象定义一个 Edit 操作。它们需要是单独的操作,我不介意在控制器中调用它们 EditUser 和 EditProfile ,但如果 URL 看起来像这样,我更喜欢:

http://www.example.com/User/Edit/{userID}

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

考虑到对同一控制器中的操作的限制,有谁知道如何实现这些路线?

对于上下文,以前的问题在这里这里

谢谢。

4

3 回答 3

6

只是一个建议,但你不能做这样的事情来映射正确的路线吗?

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

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

编辑:然后在您的控制器中创建两个单独的方法,称为 EditUser(guid userId) 和 Editprofile(guid userId)

于 2010-11-02T18:33:21.777 回答
4

您可以尝试以下方法:(未经测试)

routes.MapRoute(
    "EditUser",
    "User/Edit/{userID}", 
    new { controller = "User", action = "EditUser" });

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

编辑:

使用 MvcContrib(可从http://mvccontrib.codeplex.com/获得)语法稍微清晰一些:

(using MvcContrib.Routing;)

MvcRoute
    .MappUrl("User/Edit/{userID}")
    .WithDefaults(new { controller = "User", action = "EditUser" })
    .AddWithName("EditUser", routes);

MvcRoute
    .MappUrl("User/Profile/Edit/{userProfileID}")
    .WithDefaults(new { controller = "User", action = "EditProfile" })
    .AddWithName("EditProfile", routes);
于 2010-11-02T18:31:47.310 回答
1
using MvcContrib.Routing;

public class UserController : Controller
{
    [UrlRoute(Path = "User/Edit/{userID}")]
    public ActionResult UserEdit(int userID)
    { 

    }
}
于 2010-11-02T18:33:48.770 回答