我试图在我的网站上使用不同的语言,但我真的不知道如何正确设置我的路线才能让它发挥作用。因为我现在有一个重定向循环。
代码如下:
routes.MapRoute(
null,
url: "{culture}/{pageName}",
defaults: new
{
culture = UrlParameter.Optional,
controller = "Redirect",
action = "Index",
pageName = "debug"
});
routes.MapRoute(
null,
"{pageName}/",
new { controller = "Landing", action = "Index" }
);
routes.MapRoute(
null,
"{culture}/{pageName}/",
new { controller = "Landing", action = "Index" },
new { culture = "^[a-z]{2}" }
);
routes.MapRoute(
null,
"{culture}/blog/{pageName}",
new { controller = "Blog", action = "Index" },
new { culture = "^[a-z]{2}" }
);
routes.MapRoute(
null,
"blog/{pageName}",
new { controller = "Blog", action = "Index" }
);
问题是:如何正确设置路线以查看网站:
如果点击/pageName
>转到/pageName
(defaultCulture设置在后面并设置为english)else If /en/pageName
>重定向到/pageName
否则如果/AnyCulture/pageName
>转到/AnyCulture/pageName
else /incorrectUrl
>转到主页
感谢阅读/回答:)
您必须为区域性设置参数,以便区域性被识别为参数,相应的操作/控制器可以像暗示您的控制器/操作有这样的参数一样处理它:
routes.MapRoute(
null,
"{culture}/{pageName}/",
new { controller = "Landing", action = "Index", culture = UrlParameter.Optional },
new { culture = "^[a-z]{2}" }
);