ASP.NET Пользователь MVC, направляющий как этот в StackOverflow?

Я посмотрел на маршрутизацию на StackOverflow, и я имею очень noobie вопрос, но что-то я хотел бы разъяснение тем не менее.

Я конкретно смотрю на Пользовательский контроллер

https://stackoverflow.com/Users
https://stackoverflow.com/Users/Login
https://stackoverflow.com/Users/124069/rockinthesixstring

То, что я замечаю, - то, что существует "Пользовательский" контроллер, вероятно, с "Индексным" действием по умолчанию и действием "Входа в систему". Проблема, с которой я сталкиваюсь, состоит в том, что действие входа в систему может быть проигнорировано и "UrlParameter. Дополнительный [идентификатор]" может также использоваться.

Как точно это смотрит в наборе RegisterRoutes? Или я пропускаю что-то полностью очевидное?

Править: Вот маршрут, который я в настоящее время имею.. но это определенно далеко от права.

    routes.MapRoute( _
        "Default", _
        "{controller}/{id}/{slug}", _
        New With {.controller = "Events", .action = "Index", .id = UrlParameter.Optional, .slug = UrlParameter.Optional} _
    )
11
задан Community 23 May 2017 в 10:28
поделиться

2 ответа

Возможно, просто используется определенный маршрут для обработки этого, также используется regex для указания формата ID (чтобы не путаться с другими маршрутами, которые содержат имена действий в этой позиции).

// one route for details
routes.MapRoute("UserProfile",
     "Users/{id}/{slug}",
     new { controller = "Users", action = "Details", slug = string.Empty },
     new { id = @"\d+" }
);
// one route for everything else
routes.MapRoute("Default",
     "{controller}/{action}/{id}",
     new { controller = "Home", action = "Index", id = UrlParameter.Optional}
);
5
ответ дан 3 December 2019 в 11:20
поделиться

Без разработчика SO, дающего определенный ответ, обратная разработка может дать множество возможных комбинаций и перестановок. Вот одна из них, которая, как мне кажется, подходит:

routes.MapRoute(
    "UserProfile",
    "Users/{id}/{slug}",
        new { controller = "Users", action = "Profile" }
);

routes.MapRoute(
    "UserLogin",
    "Users/Login",
    new { controller = "Users", action = "Login" }
);

routes.MapRoute(
    "DefaultUser",
    "Users",
    new { controller = "Users", action = "Index" }
);
1
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: