【发布时间】:2016-06-30 15:48:08
【问题描述】:
免责声明:我还是个菜鸟,我正在维护一个由其他人制作的大型项目,几乎没有文档。所以我可能遗漏了一些明显的东西。
这里是: 我的 Web 应用程序可以通过 2 个 dns 名称访问,“www.website.com”和“www.siteweb.com”一个是英文,另一个是法文。
曾经有一个双语启动页面提示输入语言,但由于我们有 2 个 url,我不得不删除启动页面并自动重定向到与用于访问的 URL 对应的语言的主页它。
这是位于已失效启动页面 (index.vbhtml) 上的重定向代码:
@Code
If Request.ServerVariables("SERVER_NAME").Contains(ConfigurationManager.AppSettings("SiteDNSnameEN")) Then
Response.Redirect(Url.Action("SetLanguage", Resources.ResourceURL.CONTROLLER_LANGUAGE, New With {.pCulture = "en-CA", .pReturnURL = "/Home"}))
ElseIf Request.ServerVariables("SERVER_NAME").Contains(ConfigurationManager.AppSettings("SiteDNSnameFR")) Then
Response.Redirect(Url.Action("SetLanguage", Resources.ResourceURL.CONTROLLER_LANGUAGE, New With {.pCulture = "fr-CA", .pReturnURL = "/Accueil"}))
End If
@EndCode
在法语“主页”页面上,当我使用语言切换按钮时,面包屑可以正常工作,该按钮是指翻译 url 并触发“SetLanguage”的控制器,该控制器基本上设置 CurrentCulture 和 CurrentUICulture 并重新加载 pReturnURL。一切都得到了正确的翻译,没有问题。
但是,如果我使用英文 URL(或假使用它,因为在 dev 中它只是 localhost),则会显示面包屑,但是当我按下语言切换按钮时,不会显示面包屑。 我的最佳猜测是 MVCSiteMapProvider 仍在寻找英文资源,因为面包屑显示在恰好具有相同路径的法语或英语页面上。
我玩过 globac.asax 的路由和重定向,但我只能修复一种语言并搞砸另一种语言。
我敢肯定,有一个小问题困扰了我很长一段时间。沿着这条线的某个地方,文化变革似乎没有完成。我已经对“SetLanguage”操作进行了故障排除,它始终显示出预期的文化。可能不是这样,但我认为 MVCSiteMapProvider 并不总是出于某种原因。
这是我修改过的 Global.asax 的一部分:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
routes.MapRoute( _
"Splash", _
"", _
New With {.controller = "Root", .action = "Index"} _
)
routes.MapTranslatedRoute( _
"TranslatedRoute", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = ""}, _
New With {.controller = translationProvider, .action = translationProvider}, _
False _
)
Dim controllerHomeEN = Resources.ResourceURL.ResourceManager.GetString("CONTROLLER_HOME", New CultureInfo(WebHelper.CONST_CURRENT_CULTURE_EN))
Dim actionIndexEN = Resources.ResourceURL.ResourceManager.GetString("ACTION_INDEX", New CultureInfo(WebHelper.CONST_CURRENT_CULTURE_EN))
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = controllerHomeEN, .action = actionIndexEN, .id = UrlParameter.Optional} _
)
【问题讨论】:
标签: asp.net-mvc mvcsitemapprovider