Строчные URL-адреса в .net-канале RC2
В .net 5/MVC 6 RC1 мы можем принудительно вводить строчные URL-адреса в маршрутах со следующим:
services.ConfigureRouting(options =>
{
options.LowercaseUrls = true;
});
Как это делается в RC2/.net core 1.0?
Ответы
Ответ 1
Я думаю, что теперь вы ищете .AddRouting
расширения .AddRouting
. Вы "настраиваете" экземпляр RouteOptions
как часть добавления службы:
services.AddRouting(options => options.LowercaseUrls = true);
Обновить
Вы также можете позвонить по следующему адресу:
services.Configure<RouteOptions>(options => options.LowercaseUrls = true);
Я подробно описал некоторые изменения API в своем блоге здесь.
Ответ 2
Обновление в ASP.NET Core 2.2
В ASP.NET Core 2.2 наряду со строчными буквами вы также можете сделать пунктирным свой маршрут, используя ConstraintMap
который сделает ваш маршрут /Employee/EmployeeDetails/1
в /employee/employee-details/1
вместо /employee/employeedetails/1
.
Для этого в методе ConfigureServices
класса Startup
:
services.AddRouting(option =>
{
option.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);
option.LowercaseUrls = true;
});
И класс SlugifyParameterTransformer
должен быть следующим:
public class SlugifyParameterTransformer : IOutboundParameterTransformer
{
public string TransformOutbound(object value)
{
// Slugify value
return value == null ? null : Regex.Replace(value.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower();
}
}
Это сделает /Employee/EmployeeDetails/1
маршрут к /employee/employee-details/1