标签:包含 不包含 min mapped 消费者 get public orm lld
想要定义验证规则,我们可以使用ASP.NET Core内置的方式或者使用第三方库。
在ASP.NET Core里面,验证规则可以通过以下的方式来进行定义:
ASP.NET Core 内置了一个 ModelState对象,它用来做验证规则检查,如果规则验证不通过的话,ModelState.IsValid()方法就会返回false
public class TripManager
{
[Key]
public int Id { get; set; }
[ForeignKey( "HotelID" )]
public Hotel Hotel { get; set; }
public int HotelID { get; set; }
[ForeignKey( "CarID" )]
public Car Car { get; set; }
public int CarID { get; set; }
[DataType( DataType.Date )]
public DateTime CheckInDate { get; set; }
[DataType( DataType.Date )]
public DateTime CheckOutDate { get; set; }
[Column( "TodaysPrice" )]
[Range( 10.30, 46.60 )]
public double Price { get; set; }
public Person Responsable { get; set; }
}
public class Hotel
{
public int Id { get; set; }
[DisplayFormat( NullDisplayText = "无名称" )]
public string Name { get; set; }
}
public class Person
{
public int Id { get; set; }
[Display(Name = "姓名")]
[StringLength( 50,MininumLength = 10, ErrorMessage = "{0}的长度为{1}-{2}" )]
public string Name { get; set; }
[NotMapped]
public List<Place> VisitedPlaces { get; set; }
}
public class Car
{
public int Id { get; set; }
[Required(ErrorMessage = "{0}字段为必填")]
[MaxLength(100, ErrorMessage = "{0}的最大长度不能超过{1}"]
public string Model { get; set; }
public string Brand { get; set; }
}
ASP.NET Core 2.x 以前的验证写法
if(!ModelState.IsValid)
{
return UnprocessableEntity(ModeState);
}
ASP.NET Core 3.0 使用[ApiController]
注解时就可以省略 2.x 这样的判断,有错则自动返回400错误
public class TestAttribute:ValidationAttribute
{
protected override ValidationResult IsValid(object value,ValidationContext validationContext)
{
var dto=(Hotel)validationContext.objectInstance; //获取对象
if(Name == "傻蛋")
{
return new ValidationResult("不能叫这么Low的名字",new[]{ nameof(Hotel)});
}
return ValidationResult.Success;
}
}
[Test]
public class Hotel
{
public int Id { get; set; }
public string Name { get; set; }
}
说明
[Test]
作用于属性时, value
指要验证的属性, validationContext
指的是对象[Test]
作用于类时, value
和validationContext
相同,都指的是对象public class Hotel:IValidatableObject
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(Name == "傻蛋")
{
yield return new ValidationResult("不能叫这么Low的名字",new[]{ nameof(Name)});
}
}
}
说明
先进行[ ]
属性标签的验证,再时行Validate
方法验证,Validate
方法是“类”级别的。
标签:包含 不包含 min mapped 消费者 get public orm lld
原文地址:https://www.cnblogs.com/zhaoshujie/p/12312005.html