3

我有行动

public virtual ActionResult Show(string userId)

public virtual ActionResult Show(int groupId)

在 Global.asax 我有

routes.MapRoute(
                "Group_Default",
                "{controller}/{action}/{groupId}",
                MVC.Groups.Show()
            );

            routes.MapRoute(
                "UserProfile_Default",
                "{controller}/{action}/{userId}",
                MVC.Profile.Show()
            );

现在,当我要求group/show/...它工作正常时。但是当我调用Profile/Show/...参数为空时。但是,如果我删除UserProfile_Default,那么两者都有效,但配置文件 URL 包含参数的问号(我希望它像这样干净.../profile/show/5678
它以某种方式阻止了另一条路线。

4

1 回答 1

3

试试这些:

routes.MapRoute(
    "Group_Default",
    "Group/{action}/{groupId}",
    new { controller = "Group" }
);

routes.MapRoute(
    "UserProfile_Default",
    "Profile/{action}/{userId}",
    new { controller = "Profile" }
);

为了将来参考,路由调试器是一个非常好的工具,可以准确查看路由发生了什么以及哪些 URL 正在执行哪些操作:http ://haacked.com/archive/2008/03/13/url-routing-debugger .aspx

于 2012-04-20T20:47:54.290 回答