gpt4 book ai didi

asp.net-mvc - 在出现特定操作时使用 MVC 路由覆盖 Controller 名称

转载 作者:行者123 更新时间:2023-12-01 14:00:54 25 4
gpt4 key购买 nike

我试图在 MVC4 中指定一个路由,如果显示一个特定的操作名称,它会忽略 Controller 名称。例如。

mysite.com/AnyControllerNameHere/SpecificAction - 让我指定要使用的 Controller 和操作,而

mysite.com/AnyControllerNameHere/NotSpecificAction - 将带我使用 AnyControllerNameHere Controller 和 NotSpecificAction 方法,如 MVC 默认值。

我试图编写一些代码,但它似乎没有做我想要的。完整的路由配置只是 MVC 默认值加上我试图这样做......

    public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"SpecificAction",
"{controller}/SpecificAction",
new { controller = "Home", action = "SpecificAction" }
);


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

最佳答案

当你写这个:

routes.MapRoute(
"SpecificAction",
"{controller}/SpecificAction",
new { controller = "Home", action = "SpecificAction" });

您打算覆盖 Controller 。但是,第三个参数不能用于覆盖参数。它只是为 URL 尚未提供的任何参数提供默认值。

所以你需要的是一个不设置 Controller 参数的路由模板,以便默认生效:
routes.MapRoute(
name: "SpecificAction",
url: "{ignored}/SpecificAction",
defaults: new { controller = "Home", action = "SpecificAction" });

关于asp.net-mvc - 在出现特定操作时使用 MVC 路由覆盖 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15854483/

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