T4MVC - 不同的控制器冲突

时间:2012-04-20 20:42:06

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing t4mvc

我有行动

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/...时,参数为null。但是,如果我删除了UserProfile_Default,那么两个都有效,但个人资料网址包含参数的问号(我希望它像.../profile/show/5678一样干净) 它会以某种方式阻挡另一条路线。

1 个答案:

答案 0 :(得分:3)

请尝试这些:

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

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

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