我想创建自己的验证类(我在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”数据类型)。
你能给我一个例子,把我的验证类和里面写的代码放在哪里?。
答案 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
文件夹中: