在MVC4模板中,使用的数据注释属性之一是stringlength。
例如:
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
哪些参数{0},{1},{2}(更多?)是合法的?
编辑:更具体地说,我可以从示例和反复试验中看到可能性是什么,但我希望看到一些硬文档。
我在StringLengthAttribute documentation中找不到任何相关内容。
答案 0 :(得分:45)
{0}
索引是属性的显示名称,{1}
是MaximumLength
,{2}
是MinimumLength
。因此,您的错误消息将合成为"The Foo must be at least 6 characters long."
答案 1 :(得分:12)
我也没有看到任何文档,但FormatErrorMessage
的{{1}}方法如下所示:
StringLengthAttribute
答案 2 :(得分:2)
一个比预期更长的Google搜索使我进入了这个老话题,然后我才开始获得扎实的潜在客户,因此我将其放在这里,希望对其他人有帮助。
检查MS在GitHub上放置的StringLengthAttribute的代码,以确认FormatErrorMessage方法中存在的逻辑:
// it's ok to pass in the minLength even for the error message without a {2} param since String.Format will just
// ignore extra arguments
return String.Format(CultureInfo.CurrentCulture, errorMessage, name, this.MaximumLength, this.MinimumLength);
因此,“ 0”,“ 1”和“ 2”对应于“属性的名称”,“ MaximumLength”和“ MinimumLength”。
我敢肯定,可以将相同的方法应用于所有其他验证属性,以相应地检查其格式参数;否则,我无法找到此信息的任何其他文档。