我遇到了FluentValidation的Must方法问题。我有这个规则我的视图模型:FluentValidation自定义验证问题
RuleFor(v => v.StateCd).Must(stateCd => BeAValidStateCode(stateCd)).WithMessage("Please enter a valid, 2 character state code.")
.NotEmpty().WithMessage("State is required.")
.Length(2).WithMessage("State should be 2 characters.");
的验证方法是在视图模型:
private bool BeAValidStateCode(string stateCode)
{
string states = "|AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|";
return stateCode.Length == 2 && states.IndexOf("|" + stateCode + "|") >= 0;
}
我想确保用户进入状态代码是两个字符,并且包含在这个字符串。我已经测试了验证方法并知道它的工作原理,但它验证了诸如“aa”,“jj”等输入。我是否正确使用Must规则?
任何帮助表示赞赏。
更新:由于张贴这我已经尝试过其他一些事情,包括刚才具有BeAValidStateCode方法返回false,它仍然验证了什么,我把
您是否在控制器操作中对ModelState.IsValid执行检查? –
是的,但我正在尝试使用它进行客户端验证。 – JB06