在asp.net mvc中使用区域时如何配置路由

本文关键字:何配置 配置 路由 区域 net asp mvc | 更新日期: 2023-09-27 18:06:17

场景:我有三个区域,分别命名为:专辑歌手音乐现在,这些区域中的每一个都具有相同名称的控制器。例如,每个区域都有LoginController。

现在我得到以下异常

找到多个与名为"Login"的控制器匹配的类型如果为该请求提供服务的路由没有指定命名空间来搜索与该请求匹配的控制器,就会发生这种情况。如果是这种情况,请通过调用带有"namespaces"参数的"MapRoute"方法的重载来注册此路由。

这是Visual Studio在区域创建上自动生成的配置

 public override string AreaName 
    {
        get 
        {
            return "Albums"
        }
    }
    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
            "Albums_Default"
            "Client/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }

这是我在RoutesConfig.cs中的初始配置

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

现在,如何配置路由,在url中不进行任何修改,即可呈现所需的视图。

在asp.net mvc中使用区域时如何配置路由

请尝试这个:

  public static void RegisterRoutes(RouteCollection routes)
    {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
      routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL
        new { controller = "Home", action = "Index", id = "" }, // Defaults
        new[]{"AreasDemoWeb.Controllers"}                       // Namespaces
      );
    }

帮助链接1

帮助链接2