Настройка соглашений с помощью Razor Pages¶
По умолчанию ASP.NET Core генерирует URL-адреса, которые точно соответствуют именам файлов страниц Razor. Однако, это поведение можно изменить, настроив объект RouteOptions в файле Startup.cs.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.Configure<RouteOptions>(options =>
{
options.AppendTrailingSlash = true;
options.LowercaseUrls = true;
options.LowercaseQueryStrings = true;
})
}
А вот как задать преобразование из PascalCase в kebab-case. Сначала нужно реализовать класс преобразователь:
public class KebabCaseParameterTransformer : IOutboundParameterTransformer
{
public string TransformOutbound(object value)
{
if(value == null) return null;
return Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower();
}
}
Далее регистрируем преобразователь:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages()
.AddRazorPagesOptions(opts =>
{
opts.Conventions.Add(new PageRouteTransformerConvention(new KebabCaseParameterTransformer()));
});
}
Также можно добавить дополнительный маршрут для страницы:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages()
.AddRazorPagesOptions(opts =>
{
opts.Conventions.AddPageRoute("/Search/Products/StartSearch", "/search-products");
});
}
Вместо замены маршрута (если бы мы редактировали директиву
@page), мы добавляем дополнительный.Все возможности по изменению соглашений доступны в документации.
Последнее обновление :
21 марта 2023 г.
Дата создания : 22 сентября 2022 г.
Дата создания : 22 сентября 2022 г.