我正在为以下问题寻找一个好的解决方案:
我有一个ASP.NET MVC Web应用程序,我的几个客户端使用它。在应用程序中,客户端可以登录,查看包含信息的多个页面并填写多个表单。这一切都很有效。
但我想要的是在视图中显示不同的文本,具体取决于客户端的属性(在本例中为A类型)。这些文本可以是多语言的,用户可以在应用程序中更改语言。
我已经为此提出了几个解决方案,但我不确定最好的想法是什么。到目前为止,这些是我的想法:
在数据库中保存信息
在这种情况下,我会创建一个表(例如'ProgramTexts'),一个Key,客户端的类型,语言和它自己的文本。在我的Controller中,我将检索该视图中使用的Keys,在ViewModel中设置它们并将该viewmodel传递给视图。在视图中,我可以轻松地在ViewModel中显示给定变量的值。
我认为这对于小型网站来说非常有用,但是对于许多不同的控制器和视图来说看起来有点粗糙。我宁愿直接从视图中“调用”文本,但是从视图中调用数据库并不是更好。
资源文件
我的另一个想法是使用资源文件,因为本地化功能的构建。但是我不确定如何根据额外的变量(在这种情况下为类型)从资源中检索变量。
有没有人对如何实现这个目标有另一个想法?
答案 0 :(得分:0)
我会选择资源文件选项。是否可以为类型提供不同的资源文件?或者是否可以为不同的类型使用不同的变量名称?
例如
Message1_TypeA
Message2_TypeB
等
然后你可以使用一些聪明的技巧来根据类型读取正确的信息,这可能是一种巧妙的技巧,例如反射。
另一种选择可能是划分字符串
Message1 =“A | B | C | D”;
这样您可以检索所有类型的消息,然后在代码中可以检索当前类型的正确消息。我解释得那么好吗?我认为我没有。