c# - 仅为一个 Controller 和该 Controller 的操作映射路由。其他路由设置保持可操作

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

首先,我需要说明我使用的是 T4MVC。我的 RouteConfig 中有许多自定义路由。这是一个例子:

    routes.MapRoute("CollectionDetails", "collection/{slug}/{collectionId}", MVC.Collection.CollectionDetails());    
..............................................                     
    routes.MapRoute("Sales.Index", "sales", MVC.Sales.Index());
    routes.MapRoute("CustomPage", "custom/{slug}", MVC.CustomPage.Index());

所有这些路由都运行良好。但是我有一个 Controller (AccountController),我需要在这样的方案中为其映射路由:ControllerName/ActionName/。 我的意思是我有 Account Controller。这个 Controller 有这样的Actions:CreateAccount, CreateAccount(POST), ResetPassword, LogIn, etc... 我需要为他们创建这样的Urls : 账户/创建账户, 账户/登录。我想知道是否可以在 RouteConfig 中使用一个 route 来解决问题?

最佳答案

如果您想锁定到特定 Controller 的路由(在您的情况下,只是帐户 Controller ),那么您可以使用 T4MVC 这样做:

来自 T4MVC 文档:2.2.5 routes.MapRoute

routes.MapRoute(
     "Account",
     "Account/{action}/{id}",
      MVC.Account.Index(null));

否则你也可以达到同样的目的

来自文档 2.3. Use constants to refer to area, controller, action and parameter names

routes.MapRoute(
     name: "Account",
     url: "Account/{action}/{id}",
     defaults: new { controller = MVC.Account.Name, action = MVC.Account.ActionNames.Index, id = UrlParameter.Optional }
);

或者回到默认的方式

routes.MapRoute(
     name: "Account",
     url: "Account/{action}/{id}",
     defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);

这应该可以满足您的要求。

关于c# - 仅为一个 Controller 和该 Controller 的操作映射路由。其他路由设置保持可操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34508939/

相关文章:

c# - 如何将列表与硬编码根一起返回到 JSON

c# - 无法使用参数从 AngularJs Controller 调用 Mvc Controller Action

asp.net-mvc - 如何在 MVC3 中创建简单的路由?

c# - 将多个参数传递给操作

C# 从数据库中的表填充组合框

c# - 如何从 C 调用 C# 以传递具有数组作为成员的结构数组?

c# - 生成错误 : You must add a reference to System. 运行时

javascript - 在外部 JavaScript 中处理 ASP.NET MVC 路由

c# - 在查询中使用变量

asp.net - 如何使用asp.net mvc转到下拉选择的其他页面