Строчные 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