gpt4 book ai didi

asp.net-mvc - 属性路由和本地化问题

转载 作者:行者123 更新时间:2023-12-02 01:25:18 25 4
gpt4 key购买 nike

我正在 Nuget 上使用最新版本的 AttributeRouting 包来为 ASP.Net MVC 项目设置路由。我正在创建一个有两种语言的网站:英语(小学)和西类牙语(中学)。两种语言的 url 不同。例如,英语版的“关于我们”将是这样的:www.root.com/en/about-us,而西类牙语版本可能是这样的:www.root.com/es/sobre-nosotros。

我的路由前缀设置如下:[RoutePrefix("en", TranslationKey = "Home")]

然后我创建了一个程序,该程序将 XML 文件中的值读取到 FluentTranslationProvider 中。注册我的路线的代码如下所示:

var translations = new FluentTranslationProvider();
translations
.AddTranslations()
.FromFile();

routes.MapAttributeRoutes(
config =>
{
config.AddRoutesFromControllersOfType<BaseController>();
config.AddTranslationProvider(translations);
config.CurrentUICultureResolver =
(httpContext, routeData) =>
(string) routeData.DataTokens["cultureName"] ??
Thread.CurrentThread.CurrentUICulture.Name;
});

它似乎有效,因为我可以访问我的 Routes.axd 页面并看到以下内容:http://imm.io/nm7Z

稍后在我的页面中,我的代码显示我的 CurrentCulture 设置为 es-AR,但是当我调用 URLHelper 类来构建 url 时,它只构建默认的英语版本,不会为我提供西类牙语版本。谁能告诉我为什么会出现这种情况?我一辈子都无法弄清楚这一点。

最佳答案

您是否尝试过更新 RouteValueDictionary 并将其作为参数传递给您的 url 帮助程序?我做了类似的事情来切换 ssl。

下面是一些需要考虑的示例代码,作为辅助函数:

@functions {

public static string LanguageUrl(WebViewPage page, string actionName, string controllerName, string desiredCulture)
{
// translate action name here, if needed.
return page.Url.Action(actionName, controllerName, new { cultureName = desireCulture } );
}
}

关于asp.net-mvc - 属性路由和本地化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com