编程语言
首页 > 编程语言> > c#-仅映射一个控制器及其操作的路由.其他路由设置可操作

c#-仅映射一个控制器及其操作的路由.其他路由设置可操作

作者:互联网

首先,我需要说的是我正在使用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());

所有这些路线都运行良好.但是我有一个控制器(AccountController),需要以这种方案为其映射路由:ControllerName / ActionName /.
我的意思是我有客户经理.该控制器具有以下操作:CreateAccount,CreateAccount(POST),ResetPassword,LogIn等…我需要为其创建此类Urls:Account / CreateAccount,Account / LogIn.我想知道是否可以在RouteConfig中使用一条路由来解决?

解决方法:

如果要锁定到特定控制器的路由(在您的情况下,仅锁定到帐户控制器),则可以使用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 }
);

这应该满足您的要求.

标签:t4mvc,asp-net-mvc-routing,c,asp-net-mvc
来源: https://codeday.me/bug/20191119/2034637.html