asp.net 多语言URL路由

8tntrjer  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(139)

如果我选择FR链接按钮,我如何实现以下网址,本地主机:8009//fr/联系本地主机:8009//fr/产品本地主机:8009//fr/常见问题
如果我选择EN链接按钮,本地主机:8009//联系本地主机:8009//产品本地主机:8009//常见问题
我在www.example.com工作asp.netmvc 5

路由配置文件路由.MapMvcAttributeRoutes();

路线。Map路线(名称:“本地化默认值”,url:“{区域性}/{操作}",默认值:新建{控制器=“主页”,操作=“索引”,id = URL参数。可选},约束条件:新{ culture =“^fr|en$”});

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            ,namespaces:new string[] { "sanofi.Controllers" }
        );

英文和法文剃须刀代码〈a href="@Url.Action(“索引”,“语言”)”class=“text-cgrey-400导航-链接fw-普通文本-大写d-内联-块光标-指针文本-修饰-下划线”aria-current=“page”〉En〈a href="@Url.Action(“索引”,“语言”,new { culture =“fr”})”class=“text-cgrey-400导航链接fw-普通文本大写d-内联块光标指针”aria-current=“page”〉FR

它只适用于主页,不适用于其他页面

5lhxktic

5lhxktic1#

为了获得所需的URL结构,可以在ASP.NET MVC 5应用程序中使用属性路由。在RouteConfig.cs文件中,可以通过添加以下行来启用属性路由:路径。Map多视图属性路径();
然后可以为“fr”和“en”区域性创建两个单独的路由。
若要为“fr”区域性创建路由,可以使用MapRoute方法并指定路由的名称、URL模式和默认值。还可以为“culture”参数指定约束,确保它只接受“fr”或“en”值。

routes.MapRoute( 
   name: "FrenchRoute", 
   url: "fr/{controller}/{action}/{id}", 
   defaults: new { culture = "fr" }, 
   constraints: new { culture = "fr" },
   namespaces:new string[] { "sanofi.Controllers" }
);

若要为“en”区域性创建路由,可以使用相同的MapRoute方法,但在url和default中不使用culture参数。

routes.MapRoute( 
   name: "EnglishRoute", 
   url: "{controller}/{action}/{id}", 
   defaults
);

相关问题