资源文件作为MVC应用程序中的可编辑内容

时间:2015-01-28 09:10:44

标签: c# asp.net-mvc

客户希望能够将任何语言添加到我正在构建的基于MVC的多语言网站。

他们将负责提供翻译本身,虽然不需要通过GUI启用该过程,但它需要足够简单,因此重新编译项目是不行的。编辑文本文件(可能是XML)是可以的。

Web.config文件中使用以分号分隔的语言代码列表(例如:en-US;de-GE等)并使用RESX文件夹中的App_GlobalResources文件我能够满足条件......至少只要资源在Razor页面或MVC控制器中使用。

但是有一个问题 - 在MVC视图模型类中使用资源的任何尝试(例如Display属性或Compare属性)都会引发错误:

  

System.InvalidOperationException:无法检索属性“名称”,因为本地化失败。类型“[此处的资源类型]”不是公共的,或者不包含名称为“[资源名称此处]”的公共静态字符串属性。

已经在StackOverflow上处理此问题的

There are several,但所有问题都围绕将内容文件中的资源文件转换为嵌入资源。虽然这可能使代码功能对我不利,因为客户端无法再编辑资源!

在这种情况下我还能做些什么?

1 个答案:

答案 0 :(得分:0)

最后,我使用了MVC的自动机制,使用Razor文件中的@Resources.MyResource.DisplayName以及添加的data-val-required等属性进行了报废,这些属性也可以提供资源。