Asp.net mvc 使用资源存储的字符串-值对馈送DataAnnotations.ValidationAttribute错误消息

Asp.net mvc 使用资源存储的字符串-值对馈送DataAnnotations.ValidationAttribute错误消息,asp.net-mvc,visual-studio-2010,data-annotations,resx,validationattribute,Asp.net Mvc,Visual Studio 2010,Data Annotations,Resx,Validationattribute,MyValidationAttribute不访问使用VS2010内置资源生成器生成的resx资源文件中存储的MyErrorMessages值对。(添加新项目-资源文件) 我只是添加了一个名为Resources的文件夹,然后添加了一个新的Resources文件并将其命名为ErrorResources,在资源编辑器中我添加了一个值对StringLengthError-太长** 然后在我的DataAnnotation.ValidationAttribute中,我写道: [StringLength(

My
ValidationAttribute
不访问使用
VS2010
内置资源生成器生成的
resx
资源文件中存储的My
ErrorMessages
值对。(添加新项目-资源文件)

我只是添加了一个名为
Resources
的文件夹,然后添加了一个新的
Resources文件
并将其命名为
ErrorResources
,在资源编辑器中我添加了一个值对
StringLengthError
-太长**

然后在我的DataAnnotation.ValidationAttribute中,我写道:

  [StringLength(5, MinimumLength = 3, 
                    ErrorMessageResourceType = typeof(ErrorResources),
                    ErrorMessageResourceName = "StringLengthError")]
  public string Details { get; set; }
我使用语句添加了一个
,以包含
ErrorResources

但当我运行它时,ValidationAttribute StringLength完全无效

如果我在没有错误资源的情况下使用它,如:

  [StringLength(5, MinimumLength = 3)]
  public string Details { get; set; }
“验证”属性重新生效


我尝试访问代码其他部分中的
ErrorResources
值对,结果成功了。我只是无法让我的ValidationAttribute使用ErrorResources资源。

尝试将资源文件的
访问修饰符设置为
公共


访问修饰符应该是
Public
,但这还不够。 您必须更改resx文件的属性,使其看起来像这样:

注意
构建操作
自定义工具

此外,数据注释使用的
Resx
应该位于
App\u GlobalResources
中,而不是您提到的
Resources
中。试试这些,看看效果如何


希望这能对你有所帮助。

嗨:我忘了说我已经这么做了,什么也没发生!此外,我下载了一个项目(一些解释ValidationAttributes的文章),它在资源中使用这种错误消息,碰巧这个家伙定义的资源可以工作,但是我在这个项目中创建了一个资源文件,我的资源在那个项目中不工作。我不知道为什么,这可能与文化有关,但如果是这样,为什么它在那个项目中不起作用?我不知道该怎么想。这就是项目:如果我使用该项目中已经存在的资源文件,那么它可以工作,但是定义新的资源文件,即使在同一个目录中,也不行。是的,这是答案,自定义工具也很重要。@user1353914如果这是最有用的答案,请将其标记为已接受的答案。也谢谢你。你似乎对stackoverflow.com很陌生。欢迎,享受,祝你好运。你点击V标记(上面写着“点击将这个答案设置为你接受的答案”)。