Asp Net Mvc Routing 不对多个控制器进行操作

Asp Net Mvc Routing without action on multiple Controllers

我的 Asp Net MVC 应用程序包含 4 个控制器: 主页 |培训 |饮食 |配置

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

当我想执行 `RedirectToAction("Configurator","Configuration") 时,它告诉我找不到路由。 Picture 我尝试添加不同类型的路线,但我从未实现以下情况:
我只希望 URL 不包含控制器名称:
所以而不是:
之前:https:///localhost/Home/Login
之后:https:///localhost/Login
还有
之前:https:///localhost/Diet/DailyData
之后:https:///localhost/DailyData

我在每个控制器中都有很多方法,所以我不想为每个方法都设置一个路由。 这可能吗?如何实现?

先谢谢你了!

在 IgnoreRoutes 之后添加到 RouteConfig

routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
 
routes.MapMvcAttributeRoutes();

之后你可以使用路由属性并添加到每个控制器的顶部

    [Route("[action]")]
    public class HomeController : ControllerBase

     [Route("[action]")]
    public class TrainingController : ControllerBase

....


您只需添加 4 个属性 - 每个控制器一个。

并且return默认路由到它的默认

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

最好不要碰它。像这样设置你的默认路线

[Route("[action]")]
    public class HomeController : ControllerBase
{
[Route("~/Authorize")]
[Route("~/Home/Index")]
public IActionResult Authorize()