C#使用资源文件进行验证消息

use*_*381 0 c# asp.net-mvc asp.net-mvc-4

我正在开发一个asp.net MVC-4项目.我正在使用资源文件(.resx)进行国际化.我是第一次使用它,所以这个问题可能很愚蠢,很抱歉.

我已经创建了一个资源文件进行验证.我在我的项目中也创建了一些自定义验证.我的一个自定义验证是检查数组项长度,最大值和最小值.因此,如果验证失败,我必须显示验证消息:

数组长度必须小于5且大于1

现在我不想硬编码消息中的min(1)和max(5)值.那么有人可以告诉我如何在使用资源文件提供验证消息时实现这一目标?

Rap*_*aus 6

那么你可以将你的消息存储在resx中(格式化的字符串)

Array length must to less that {0} and greater than {1}
Run Code Online (Sandbox Code Playgroud)

然后当你使用它时,就像那样

string.Format(resource.GetString("<MyMessage>"), 5, 1);
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想使用StringLength属性,你可以这样做

资源字符串可以是:

Property {0} : Array length must be less than {1} and greater than {2}
Run Code Online (Sandbox Code Playgroud)

和属性定义

[StringLength(5, ErrorMessageResourceName = "PostTitleLength"/*or a constant*/, ErrorMessageResourceType = typeof(ValidationResource), MinimumLength = 1)]
Run Code Online (Sandbox Code Playgroud)

或者,如果错误消息始终相同,则可以从StringLengthAttribute继承.

请参阅修改StringLength验证的默认ErrorMessage