Невозможно создать правильный маршрут в веб-приложении mvc5 - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь создать маршрут для одного из действий моего веб-приложения, но я не могу этого сделать.Это текущий URL: http://localhost:8093/Profile/Get?Name=John, который я хочу изменить на http://localhost:8093/Profile/John

В моем RouteConfig я пробовал

routes.MapRoute(
             name: "Profile",
             url: "Profile/Get/{Name}",
             defaults: new { controller = "Profile", action = "Get", Name = UrlParameter.Optional }
        );

и

routes.MapRoute(
             name: "Profile",
             url: "Profile/{Name}",
             defaults: new { controller = "Profile", action = "Get", Name = UrlParameter.Optional }
        );

Но ничего не работает.Нужно немного руководства относительно того, что я делаю неправильно.

Это метод RegisterRoutes

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


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

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

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

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

    }

routes.MapRoute(
         name: "Profile",
         url: "Profile/{Name}",
         defaults: new { controller = "Profile", action = "Get", Name = UrlParameter.Optional }
    );

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Ваша проблема - маршрут default, он всегда должен быть последним.Файл RouteConfig.cs читается сверху вниз и идет по первому найденному маршруту, соответствующему URL-адресу.Пожалуйста, измените ваш RouteConfig.cs на приведенный ниже.

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

    routes.MapRoute(
         name: "Profile",
         url: "Profile/{Name}",
         defaults: new { controller = "Profile", action = "Get", Name = UrlParameter.Optional }
    );

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

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

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

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

}
0 голосов
/ 14 апреля 2019

вы можете использовать это и изменить свое имя контроллера и имя действия:

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

вам не нужно использовать строку запроса в настройке URL.

...