首先我们实现一个TestModel类,里面包含几个简单的属性,然后指定几个Attribute
public class TestModel
{
[Required(ErrorMessage = "名称不能为空")]
public string Name { get; set; }
[StringLength(12, ErrorMessage = "编号不能超过11位")]
public string OrderNum { get; set; }
}
然后实现一个ValidatetionHelper静态类,这里主要用到的是Validator.TryValidateObject方法。.
public static class ValidatetionHelper
{
public static ValidResult IsValid(object value)
{
ValidResult result = new ValidResult();
try
{
var validationContext = new ValidationContext(value, null, null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(value, validationContext, results, true);
if (!isValid)
{
result.IsVaild = false;
result.ErrorMembers = new List<ErrorMember>();
foreach (var item in results)
{
result.ErrorMembers.Add(new ErrorMember()
{
ErrorMessage = item.ErrorMessage,
ErrorMemberName = item.MemberNames.FirstOrDefault()
});
}
}
else
{
result.IsVaild = true;
}
}
catch (Exception ex)
{
result.IsVaild = false;
result.ErrorMembers = new List<ErrorMember>();
result.ErrorMembers.Add(new ErrorMember()
{
ErrorMessage = ex.Message,
ErrorMemberName = "Internal error"
});
}
return result;
}
}
然后写一个测试代码:
TestModel testModel = new TestModel();
testModel.OrderNum = "1111111111111111111111111111";
var result = ValidatetionHelper.IsValid(testModel);
if (!result.IsVaild)
{
foreach (ErrorMember errorMember in result.ErrorMembers)
{
Console.WriteLine(errorMember.ErrorMemberName + ":" + errorMember.ErrorMessage);
}
}
查看输出结果:
通过测试,可以看到得到正确的验证结果。