ASP.NET Core по умолчанию использует CamelCase-маршруты, такие как http://localhost:5000/DashboardSettings/Index. Но я хочу использовать строчные маршруты, которые ограничены тире: http://localhost:5000/dashboard-settings/index Они более распространены и последовательны, поэтому мое приложение расширяет сайт работает Wordpress, который также имеет строчные URL-адреса с тире.
Я узнал, что я могу изменить URL-адреса в нижнем регистре с помощью параметров маршрутизации:
services.ConfigureRouting(setupAction => {
setupAction.LowercaseUrls = true;
});
Это работает, но дает мне URL-адреса без разделителя, такие как http://localhost:5000/DashboardSettings/Index, которые плохо читаемы. Я мог бы определить пользовательские маршруты, используя атрибут route, например
[Route("dashboard-settings")]
class DashboardSettings:Controller {
public IActionResult Index() {
// ...
}
}
Но это вызывает дополнительную работу и подвержено ошибкам. Я бы предпочел автоматическое решение, которое ищет символы в верхнем регистре, вставьте перед ним тире и сделайте прописную букву < char в нижнем регистре. Для старого ASP.NET это не было большой проблемой, но на ядре ASP.NET я не вижу направления, как справиться с этим.
Каким образом это можно сделать здесь? Мне нужен какой-то интерфейс, где я могу генерировать URL-адреса (например, для помощников тегов) и заменять там CamelCase на тире-разделители. Тогда мне нужен другой вид интерфейса для маршрутизации, так что URL-адреса тире-разделителя преобразуются обратно в CamelCase для правильного сопоставления с моими именами контроллеров/действий.