2011-08-31 28 views
4

关于翻译由DefaultModelBinder提供的默认错误信息(如this onethis one)的stackoverflow和其他站点,有很多问题(和答案)。asp.net MVC3 DefaultModelBinder错误信息键

对这些问题的所有答案基本上proprose创建的ressource(RESX)下App_GlobalResources文件文件,并把一个消息“PropertyValueInvalid”。 (EX“的值XXX必须是一个数字”)

这很好,它确实作品,但有其他消息还和最大的问题是:凡在地狱,我可以有一个列表用于模型绑定验证的消息密钥,以及它们用于上下文的描述,以便我可以翻译它们中的每一个?

回答

8

DefaultModelBinder.ResourceClassKey = "ResourceFileName";在Application_Start方法中被设定在DefaultModelBinder类使用比由Asp.Net MVC中使用的资源文件中定义的其他资源的密钥。

虽然拆卸DefaultModelBinder有一种方法GetUserResourceString从自定义资源文件中读取。此功能仅与这些消息的密钥称为两次:

  • PropertyValueRequired(需要的值。)
  • PropertyValueInvalid(该值 '{0}' 是无效的{1}。)

这些是可以在MVC3中为DefaultModelBinder设置的唯一消息。

+3

似乎没有工作(MVC4)。我在App_GlobalResources中添加了一个ErrorMessages.resx与我的自定义消息,然后设置DefaultModelBinder.ResourceClassKey =“ErrorMessages”; ClientDataTypeModelValidatorProvider.ResourceClassKey =“ErrorMessages”;在Global.asax Application_Start ...中仍然显示标准消息。钥匙我说:FieldMustBeDate,FieldMustBeNumeric(这些工作),PropertyValueInvalid,PropertyValueRequired(这两个不工作) – Nestor

+0

我使用MVC4,它为我工作。您是否手动创建文件夹并将其命名为App_Globalresources或者您是否右键单击该项目并添加了ASP.NET文件夹?另外,我没有添加这个:ClientDataTypeModelValidatorProvider.ResourceClassKey =“ErrorMessages” – Remy