2010-08-20 80 views
1

我有一种感觉,这是非常明显的,我错过了,但在这里。ASP.Net全球化MVC控制器

我想在ASP.Net MVC项目(C#,MVC2,.Net4.0)中设置多种语言。但是,我有一些情况下我想要在控制器中翻译短语(主要是错误/成功消息)。但是,似乎我尝试的每种方法都是protectedinternal。如何从我的控制器访问resx文件?

回答

2

这是一个演示文稿的具体问题,我认为最好的方法是在视图级别处理此问题。如果您从视图访问资源,则问题会更少。还要注意,从控制器访问资源使得它们不易测试,因为当访问资源时(默认情况下),资源管理器会查找在测试时找不到的特定文件。

+1

我同意。您可以在特定于视图的资源中为用户包含几个不同的可能消息,并让控制器传递一个密钥或其他类型的指示符,以允许视图决定需要显示哪些消息。我不认为控制者应该做的不止于此,因为用户如何被告知这种情况是对这一观点的决定。 – 2010-08-20 19:50:34

1

确保为您创建的resx类的修饰符是Public。当你编辑resx文件时,你会看到一个下拉菜单,修饰符朝右上方(靠近屏幕的垂直中间)。

但是,考虑一下这样一个事实,即您可以通过使用DataAnnotations和资源文件修饰不同的属性,让ViewModel负责本地化验证消息。

+0

我看了一下DataAnnotations,并没有太过分。看起来你需要使用Linq-To-SQL?我使用NHibernate。我正在关注这个(http://msdn.microsoft.com/en-us/library/cc488527.aspx)教程,但是我的部分类无法在不同的项目中找到我的NHibernate类。 – 2010-08-20 17:54:20