gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:04:48 25 4
gpt4 key购买 nike

首先,我需要说明我使用的是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com