asp.net mvc 3 ViewContext到新对象,然后更改tempViewContext.RouteData修改原始ViewContext

时间:2011-03-30 09:48:00

标签: vb.net asp.net-mvc-3

我参与了文化切换控制,我需要修改 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改回原来的文化......跳跃有另一种方式,但它适用于知道。

1 个答案:

答案 0 :(得分:0)

RouteData应该是只读的。如果要更改文化,可以创建新请求。例如,如果您有以下路线:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{culture}",
    new { controller = "Home", action = "Index", culture = UrlParameter.Optional }
);

你可以发送一个新请求:/Home/Index/fr-FR,它将修改相应的路由参数。

这是关于本地化的nice article,我建议您阅读。