我参与了文化切换控制,我需要修改 ViewContext.RouteData(“culture”)检查视图是否存在 无论如何,当我做以下
Dim routeData As RouteData = ViewContext.RouteData
routeData.Values.Remove("culture")
routeData.Values.Add("culture", cultureValue)
然后在更改routeData时更改原始的ViewContext.RouteData。
我已经测试过以下但没有成功
Dim tempViewContext As New ViewContext(ViewContext.Controller.ControllerContext, ViewContext.View, ViewContext.ViewData, ViewContext.TempData, ViewContext.Writer)
Dim routeData As RouteData = tempViewContext.RouteData
routeData.Values.Remove("culture")
routeData.Values.Add("culture", cultureValue)
有谁知道如何将ViewContext复制到临时对象并更改值而不更改原始ViewContext值?
编辑:我知道工作的唯一方法是更改routeData,然后检查它是否存在以及之后 它将routeData改回原来的文化......跳跃有另一种方式,但它适用于知道。
答案 0 :(得分:0)
RouteData应该是只读的。如果要更改文化,可以创建新请求。例如,如果您有以下路线:
routes.MapRoute(
"Default",
"{controller}/{action}/{culture}",
new { controller = "Home", action = "Index", culture = UrlParameter.Optional }
);
你可以发送一个新请求:/Home/Index/fr-FR
,它将修改相应的路由参数。
这是关于本地化的nice article,我建议您阅读。