在MVC视图中显示变量文本

时间:2012-05-23 15:27:14

标签: c# asp.net-mvc resx

我正在为以下问题寻找一个好的解决方案:

我有一个ASP.NET MVC Web应用程序,我的几个客户端使用它。在应用程序中,客户端可以登录,查看包含信息的多个页面并填写多个表单。这一切都很有效。

但我想要的是在视图中显示不同的文本,具体取决于客户端的属性(在本例中为A类型)。这些文本可以是多语言的,用户可以在应用程序中更改语言。

我已经为此提出了几个解决方案,但我不确定最好的想法是什么。到目前为止,这些是我的想法:

在数据库中保存信息

在这种情况下,我会创建一个表(例如'ProgramTexts'),一个Key,客户端的类型,语言和它自己的文本。在我的Controller中,我将检索该视图中使用的Keys,在ViewModel中设置它们并将该viewmodel传递给视图。在视图中,我可以轻松地在ViewModel中显示给定变量的值。

我认为这对于小型网站来说非常有用,但是对于许多不同的控制器和视图来说看起来有点粗糙。我宁愿直接从视图中“调用”文本,但是从视图中调用数据库并不是更好。

资源文件

我的另一个想法是使用资源文件,因为本地化功能的构建。但是我不确定如何根据额外的变量(在这种情况下为类型)从资源中检索变量。

有没有人对如何实现这个目标有另一个想法?

1 个答案:

答案 0 :(得分:0)

我会选择资源文件选项。是否可以为类型提供不同的资源文件?或者是否可以为不同的类型使用不同的变量名称?

例如

Message1_TypeA
Message2_TypeB

然后你可以使用一些聪明的技巧来根据类型读取正确的信息,这可能是一种巧妙的技巧,例如反射。

另一种选择可能是划分字符串

Message1 =“A | B | C | D”;

这样您可以检索所有类型的消息,然后在代码中可以检索当前类型的正确消息。我解释得那么好吗?我认为我没有。