使用视图中的单独语言文件夹进行本地化

时间:2010-06-17 16:35:11

标签: c# asp.net-mvc asp.net-mvc-2 views routes

我正在尝试为Views中的每种语言设置特定文件夹。 (我知道这不是最好的方法,但现在必须采用这种方式)
例如 /Views/EN/User/Edit.aspx /Views/US/User/Edit.aspx

这些都使用相同的控制器和模型,但每种语言都有不同的视图。

Global.asax.cs我有:

routes.MapRoute(
    "Default", // Route name
    "{language}/{controller}/{action}/{id}", // URL with parameters
    new { language = "en", controller = "Logon", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
    new { language = @"en|us" } // validation
);

这可以正常但总是指向相同的视图 如果我将路径放到Lanagugage文件夹中,它可以工作:

return View("~/Views/EN/User/Edit.aspx");

但显然这不是一个很好的方法 反正有没有让MVC查看正确的语言文件夹?

我知道这不是进行本地化的最佳方式,但我无法使用资源文件。

1 个答案:

答案 0 :(得分:0)

更改ViewEngine以使用路线参数

Change lookup rule for views

修改

由于为视图扫描的路径列表是静态的,因此根据上面的链接更改列表,根据某些控制器实例,无法选择不同的视图。 这似乎是一个更有希望的起点:

http://www.dotnetguy.co.uk/post/2010/01/31/ASPNET-MVC-e28093-Dynamically-Changing-The-Master-Page-%28Theming%29.aspx

它会覆盖CreateView以获取渲染的视图。该示例更改了主页,但希望它也适用于视图。