我在mvc3模型中使用存储在App_GlobalResources
文件夹中的resx文件和DataAnnotations进行翻译。
它适用于Required DataAnnotation
,但如果我尝试使用Display DataAnnotation
,它就不再有用了。
这是我的代码:
[Required(ErrorMessageResourceType = typeof(Resources.Error), ErrorMessageResourceName = "RequiredClientName")]
[Display(Prompt = "ClientName", ResourceType = typeof(Resources.Front))]
public string Name { get; set; }
只有在我放置System.InvalidOperationException
Display DataAnnotation
以下是完整的例外情况(对不起,我没有找到用英语翻译的方法):
Impossiblederécupérerlapropriété'Prompt'enraison de l'échecde 本地化。 Le type'Infrance.Front'n'est pas public ou ne contient pasunepropriétédechaînestatiquepublique avec le nom 'FooterAbout'。
描述:Une例外非gérées'estproduite au moment de l'exécutiondelarequêteWebactuelle。 Contrôlezlatrace de la pile pour plus d'informations sur l'erreur et son origine dans le code。
Détailsdel'exception:System.InvalidOperationException:不可能 derécupérerlapropriété'Prompt'enraison de l'échecdela 本土化。 Le type'Infrance.Front'n'est pas public ou ne contient pasunepropriétédechaînestatiquepublique avec le nom 'FooterAbout'。
我使用的模型存储在Area
中。
另外,我可以从_Layout
或Required DataAnnotation
感谢您的帮助
弗洛朗。
答案 0 :(得分:1)
错误信息非常自我解释(我正在为该网站的非法语听众翻译):
无法检索属性“提示”,因为本地化失败。类型 'Resources.Front'不公开或不包含公共静态 名为“ClientName”的字符串属性。
您应该通过在RESX文件的属性中将自定义工具设置为PublicResXFileCodeGenerator
并将构建操作设置为Embedded Resource
来公开资源文件:
原因是因为默认情况下生成的强类型类是内部的,Razor视图无法访问这些视图,这些视图在运行时被编译为单独的程序集。