【问题标题】:mvc3 prompt System.InvalidOperationExceptionmvc3 提示 System.InvalidOperationException
【发布时间】:2012-07-06 00:25:26
【问题描述】:

我正在使用存储在 App_GlobalResources 文件夹中的 resx 文件的翻译,并在 mvc3 模型中使用 DataAnnotations。

使用Required DataAnnotation 可以正常工作,但如果我尝试使用Display DataAnnotation,它就不再工作了。

这是我的代码:

[Required(ErrorMessageResourceType = typeof(Resources.Error), ErrorMessageResourceName = "RequiredClientName")]
[Display(Prompt = "ClientName", ResourceType = typeof(Resources.Front))]
public string Name { get; set; }

只有当我放置Display DataAnnotation时才会抛出System.InvalidOperationException

这是完整的例外(对不起,我没有找到翻译成英文的方法):

Impossible de récupérer la propriété 'Prompt' en raison de l'échec de 本地化。 Le type 'Resources.Front' n'est pas public ou ne contient pas une propriété de chaîne statique publique avec le nom 'FooterAbout'。

描述 : Une exception non gérée s'est produite au moment de l'execution de la requête Web actuelle。 Contrôlez la trace de la 堆 pour plus d'informations sur l'erreur et son origine dans le code。

异常详情:System.InvalidOperationException:不可能 de récupérer la propriété 'Prompt' en raison de l'échec de la 本土化。 Le type 'Resources.Front' n'est pas public ou ne contient pas une propriété de chaîne statique publique avec le nom 'FooterAbout'。

我使用的模型存储在Area 中。 此外,我可以从 _LayoutRequired DataAnnotation 访问我的 resx 文件中的值

感谢您的帮助

弗洛伦特。

【问题讨论】:

    标签: c# asp.net-mvc-3 internationalization data-annotations


    【解决方案1】:

    错误信息很容易解释(我正在为网站的非法语观众翻译):

    无法检索属性“提示”,因为本地化失败。类型 “Resources.Front”不是公共的或不包含公共静态 名称为“ClientName”的字符串属性。

    您应该通过在 RESX 文件的属性中将自定义工具设置为 PublicResXFileCodeGenerator 并将构建操作设置为 Embedded Resource 来公开资源文件:

    这是因为默认情况下,生成的强类型类是内部的,并且在运行时编译为单独的程序集的 Razor 视图无法访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多