2009-10-04 68 views
0

我将着眼于如何实现ASP.NET MVC项目的国际化。我正在研究如何让用户更改语言。我的初始是一个包含每个支持的语言的下拉列表。无论谁想到几个问题:在ASP.NET MVC应用程序中缓存和访问配置数据

  1. 如何存储支持的语言列表? (例如,“en”,“English”,“fr”,“French”等)xml文件? .config文件?
  2. 如果我把它存储在一个文件中,我将不得不缓存这个(我猜想在启动时)。那么,最好是将XML数据加载到列表中(以某种方式)并将此列表存储在System.Web.Cache中?申请状态?
  3. 那么如何将这些数据加载到视图中(用于在下拉菜单中显示)?让视图直接访问缓存?

只是想确保我在这里正确的方向前进......

谢谢。

回答

1

请首先告诉我们您在“国际化”下的理解吗?

一)你想只有UI几种语言

b)你想有几种语言

看一看,我做了专题一些解释这个其他问题的内容: Advice on ASP.NET Multi-Lingual Strategy

您的问题:

  1. 我会建议存储数据库,你所支持的语言列表可以用2个字符的代码来识别它们。见ISO 3166-1 alpha-2 country codes

  2. 如果您来自ASP.NET WebForms世界,那么当您处理ASP.NET MVC时,首先要注意的将是状态性和缓存。您可以在session或cookie中存储简单的单个值,以指示当前活动的语言。服务器端将根据此提交的值以所需语言生成视图。

  3. 您在您的控制器中实例化一个模型以传递给视图。在模型中,您可以拥有一个属性 - 一个包含可用语言的列表。视图可以(并且应该)使用从其模型显示的数据。

关于您可以在哪里存储缓存版本的语言。你可以考虑在某个地方有一个静态列表,它将在第一个请求时被初始化(如弱引用)。它将在给定应用程序域的所有请求之间共享,这意味着您的Web应用程序的所有用户将看到相同的值(直到域被回收或服务器重新启动)。如果您要使用服务器会话,那么将为每个新用户会话重新创建列表。

+0

我刚才提到国际化部分只是作为背景,这里的问题比这个更普遍 - 国际化并没有真正涉及到它,而只是如何最好地填充下拉菜单。 – UpTheCreek 2009-10-04 14:31:40

+0

谢谢,只是澄清了几点... 1)我宁愿不去数据库的这一点。它将在每个页面上都需要,而且变化不大。2)关于缓存,我的意思是缓存可用语言列表,而不是用户选择(将存储在cookie中) – UpTheCreek 2009-10-04 14:36:58

+0

在最后看到更新。 – 2009-10-04 14:48:08

相关问题