在MVC5中重用验证属性
我一直在进行大量关于验证以及它如何工作的研究。 我知道我们可以使用属性,甚至可以创建自定义属性,我们可以通过ViewModel来验证这些数据。 虽然这一切都工作正常,我发现自己重复使用多个ViewModels属性的相同组合。
例如,让我们在项目X中输入名称,名称,电影名称,图书名称,人名,姓氏等......这是一个名字,因此我倾向于申请90%的验证属性相同。 必填,最小长度3,最大长度50,只有字母,空格等...你得到的图片。
现在我最终得到一个有5个以上属性的变量。 这些是预构建的属性,我不希望再次编码,因为它们已经为我编码。 所以我的问题是这样的:
我如何创建一个CustomValidateName属性,它将验证所有这些情况,根据错误提供不同的错误消息,同时重新使用.NET框架中的某些内置属性,发明车轮。 这里的底线是,每当我有一个Name变量时,我现在可以把这个属性而不是正常的5+。
使用可以为您的所有验证创建自定义验证
例如 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
namespace Custom_DataAnnotation_Attribute.Models
{
public class CustomEmailValidator : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
string email = value.ToString();
if (Regex.IsMatch(email, @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}", RegexOptions.IgnoreCase))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Please Enter a Valid Email.");
}
}
else
{
return new ValidationResult("" + validationContext.DisplayName + " is required");
}
}
以上方法为所需的nd电子邮件类型生成验证
您可以添加更多验证在此方法中使用If Else或切换并还原custome消息
型号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Custom_DataAnnotation_Attribute.Models
{
public class EmployeeModel
{
public string Name { get; set; }
[CustomEmailValidator]
public string Email { get; set; }
public string Password { get; set; }
public string Mobile { get; set; }
}
}
链接地址: http://www.djcxy.com/p/56611.html