Области маршрутизации в asp.net mvc

#c# #asp.net-mvc #routes #area

#c# #asp.net-mvc #маршруты #область

Вопрос:

У меня есть область пользователя, и я хочу удалить контроллер из URL-адреса области пользователя

Я пытался использовать

 [Route("User/ChangePassword")
public ActionResult ChangePassword()
  

но это не работает!

Настройка маршрута

   public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapMvcAttributeRoutes();
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
  

Пользовательская область регистрации

  public override string AreaName 
        {
            get 
            {
                return "User";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "User_default",
                "User/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
  

Итак, как я могу сгенерировать этот URL-адрес для области пользователя?

domain.com/user/changepassword

Ответ №1:

Вы можете добавить пространство имен в Route.config. Это будет указывать на путь конфигурации области

   public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapMvcAttributeRoutes();
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                namespaces: new[] {
                "Areas.Controllers"
            }
            );
        }