【发布时间】:2017-03-13 02:00:34
【问题描述】:
ASP.NET Core 默认使用像 http://localhost:5000/DashboardSettings/Index 这样的 CamelCase-Routes。但是我想使用由破折号分隔的小写路由:http://localhost:5000/dashboard-settings/index 它们更常见和一致,因为我的应用程序扩展了一个运行 Wordpress 的网站,该网站也有带有破折号的小写 URL。
我了解到我可以使用路由选项将网址更改为小写:
services.ConfigureRouting(setupAction => {
setupAction.LowercaseUrls = true;
});
这行得通,但给了我没有任何分隔符的网址,例如 http://localhost:5000/dashboardsettings/index,它们的可读性很差。我可以使用像
这样的路由属性来定义自定义路由[Route("dashboard-settings")]
class DashboardSettings:Controller {
public IActionResult Index() {
// ...
}
}
但这会导致额外的工作并且容易出错。我更喜欢搜索大写字符的自动解决方案,在它们之前插入一个破折号并使大写字符小写。对于旧的 ASP.NET,这不是一个大问题,但在 ASP.NET Core 上,我看不到如何处理这个问题的方向。
这里有什么方法?我需要某种接口,我可以在其中生成 url(例如标签助手)并用破折号分隔符替换 CamelCase。然后我需要另一种路由接口,以便将破折号分隔符 url 转换回 CamelCase,以便与我的控制器/动作名称正确匹配。
【问题讨论】:
-
服务的命名空间是什么?以及在哪里插入 ConfigureRouting?
-
services.ConfigureRouting 似乎不再存在 - 我认为您现在使用 services.AddRouting 代替
标签: c# asp.net-core url routes asp.net-core-mvc