RouteOptions中的LowercaseUrls = true不会影响具有非罗马字符的URL

时间:2017-09-03 11:58:21

标签: asp.net-core asp.net-core-mvc asp.net-routing

在ASP.NET MVC CORE 2.0中

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<RouteOptions>(options => options.LowercaseUrls = true);
    services.AddMvc();
}

<a asp-action="New-Post">New post</a>

正常工作,提供http://domain/controller/new-post

等网址

但是这个

<a asp-action="Новая-Публикация">Новая публикация</a>

生成类似http://domain/controller/Новая-Публикация

的网址

如何解决这个问题,只针对任何语言获取小写的网址?

1 个答案:

答案 0 :(得分:1)

似乎RouteCollection使用ToLowerInvariant()来小写网址:https://github.com/aspnet/Routing/blob/032bcf43b2cefe641fc6ee9ef3ab0769024a182c/src/Microsoft.AspNetCore.Routing/RouteCollection.cs#L155

引自MSDN

  

使用不变文化的大小写规则返回转换为小写的String对象的副本。

来自CultureInfo.InvariantCulture

  

不变文化对文化不敏感;它与英语有关,但与任何国家/地区无关。

所以它不适用于其他字母表。

您应该在Routing repo中检查是否存在问题,并在那里发布一个问题。他们能够判断实施是否可行。