【发布时间】:2018-09-13 16:02:23
【问题描述】:
创建 Razor 页面时,例如“Events.cshtml”,将其模型名称设置为
@page
@model EventsModel
在这种情况下,页面的名称是“事件”,并且 URL 看起来像
http://example.com/Events
为了能够在挪威语中使用页面名称,我在“Startup.cs”中添加了以下内容
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddRazorPagesOptions(options => {
options.Conventions.AddPageRoute("/Events", "/hvaskjer");
options.Conventions.AddPageRoute("/Companies", "/bedrifter");
options.Conventions.AddPageRoute("/Contact", "/kontakt");
});
有了这个,我也可以使用这样的 URL 并仍然提供“事件”页面
http://example.com/hvaskjer
我计划支持更多语言,我想知道,这是设置本地化页面名称/路线的推荐方法吗?还是有更合适、正确的方法来完成相同的操作。
我的意思是,对于上面的示例,有 10 种语言的 15 页,使用 options.Conventions.AddPageRoute("/Page", "/side"); 150 次会变得/感觉混乱。
【问题讨论】:
-
如果它听起来不像是“真实”路由,但使用 IIS url 重写模块或此中间件 docs.microsoft.com/en-us/aspnet/core/fundamentals/… 可能会更好
-
@numbtongue 感谢您的评论。因为该应用程序可能在其他环境中运行,例如IIS,我需要避免这样的解决方案。使用中间件进行重写感觉不如我已经使用的合适,并且希望有一个内置选项来解决这个问题。
-
如果你能把它们放在一个你可以指定
的 web.config 中会很好(虽然可能会让未来的开发者感到困惑)stackoverflow.com/a/40220739/3254405 -
@numbtongue 我不想在“web.config”中存储数百个路径标签,它们是根据所选语言从数据库中存储和读取的,并且很容易更改。跨度>
-
可能只为 .com 和 .no 等域创建路由,从那里你会知道要使用哪个路径..
标签: asp.net-core asp.net-core-2.1 razor-pages