1

我需要一些动态路由。所以我的路线看起来像这样:

{UserName}
{UserName}/Edit/{id}
{UserName}/Delete/{id}

用户将被路由到用户控制器的位置。但我仍然想维护到控件的路线,例如:

{Controller}/Edit/{id}
{Controller}/Delete/{id}

所以基本上我希望它指向物理控制器,比如称为 OrdersController 进行编辑删除,但如果有人导航到 /jdoe/,它会将其发送到用户控制器。

我如何在我的路线中做到这一点?

4

1 回答 1

1

您需要创建多条路线,并将它们保持在适当的顺序

// one route for Users
routes.MapRoute("Users",
     "{username}/{action}/{id}",
     new { controller = "Users", action = "Index", username = string.Empty, id = UrlParameter.Optional },
     new { id = @"\d+" }
);
// one route for everything else
routes.MapRoute("Default",
     "{controller}/{action}/{id}",
     new { controller = "Home", action = "Index", id = UrlParameter.Optional},
     new { id = @"\d+" }
);

它不像上面“真的”那么容易,但这就是它的要点。您还需要添加一个RouteConstraint来验证用户名。

最后,如果您使用的是用户名参数,那么为什么需要 id?只是一个想法。


另外:
如果您查看 StackOverflow 上的用户部分,您会看到路由看起来更像这样。

  • 用户/{id}/{用户名}
  • 用户/{id}/编辑
  • 用户/{id}/删除

我个人会说要实现的工作要少得多……但是,这只是我。

于 2012-07-21T20:43:21.493 回答