In .NET-Core, können Sie einfach eine Klasse erstellen, die von ValidationAttribute
erbt. Sie können die vollständigen Details im ASP.NET Core MVC Docs sehen.
Hier ist das Beispiel direkt aus der Dokumentation entnommen:
public class ClassicMovieAttribute : ValidationAttribute
{
private int _year;
public ClassicMovieAttribute(int Year)
{
_year = Year;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Movie movie = (Movie)validationContext.ObjectInstance;
if (movie.Genre == Genre.Classic && movie.ReleaseDate.Year > _year)
{
return new ValidationResult(GetErrorMessage());
}
return ValidationResult.Success;
}
}
ich das Beispiel angepasst habe clientseitige Validierung auszuschließen, wie es in Ihrer Frage angefordert.
Um dieses neue Attribut zu verwenden (wieder von der docs genommen), müssen Sie es auf das entsprechende Feld hinzuzufügen: um sicherzustellen, dass ein Wert true
ist
[ClassicMovie(1960)]
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
Hier ist ein weiterer, einfacheres Beispiel:
public class EnforceTrueAttribute : ValidationAttribute
{
public EnforceTrueAttribute()
: base("The {0} field must be true.") { }
public override bool IsValid(object value) =>
value is bool valueAsBool && valueAsBool;
}
Dies wird in gleicher Weise angewandt:
[EnforceTrue]
public bool ThisShouldBeTrue { get; set; }