创建自定义数据类型验证

时间:2014-06-13 18:18:11

标签: c# asp.net-mvc validation

我想创建自己的验证类(我在JS中有很多验证方法,我想将其转换为C#以与MVC模型一起使用),其工作原理与数据注释完全相同,在客户端和服务器端进行验证:{ {1}}或类似于验证数据注释属性,如下所示:[DataType(MyDataType)]

我不知道哪个选项更适合我的验证“库”

在示例中,我有我的类FigurasDA,我想对属性nombre进行自定义验证。

[MyDataTypeValidation]

所以在这种情况下,我想验证字符串是否与正则表达式namespace MonitoreoIntegrado.Models { [MetadataType(typeof(FigurasDA))] public partial class Figuras { } public class FigurasDA { [DataType(MyDataType)] //or [MyDataTypeValidation] public string nombre { get; set; } } } 匹配,并显示如下错误消息“Solo se permite letras,numeros y puntuaciones( - _。)”如果不这样做。 (这是我的“Alfanumerico”数据类型)。

你能给我一个例子,把我的验证类和里面写的代码放在哪里?。

1 个答案:

答案 0 :(得分:6)

实际上它很简单......您只需从ValidationAttribute类继承自定义验证属性并提供自己的IsValid逻辑。例如:

public class MyDataTypeValidationAttribute : ValidationAttribute
{
    private Regex _regex = new Regex(@"^[\w\s.-_]+$");          

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {               
        if (_regex.IsMatch(value.ToString()))
        {
            return ValidationResult.Success;
        }

        return new ValidationResult("Solo se permite letras, numeros y puntuaciones(- _ .)" );
    }
}

在您的视图模型中,您可以使用:

public class FigurasDA
{    
    [MyDataTypeValidation]
    public string nombre { get; set; }
}

您可以保存此验证属性,例如在MVC项目的Attributes文件夹中:

Step 1

Step 2

Step 3