In ASP.NET CORE verwenden Sie IvalidatableObject, um die bedingte Überprüfung zu implementieren
ivalIdatableObject Interface ist ein praktisches Instrument zur Überprüfung des ASP.NET -Kernobjekts. Sie können benutzerdefinierte Überprüfungsregeln definieren, mit denen Attribute oder Prozessbedingungen überprüft werden können.
Ein häufiger Fall der Schnittstelle besteht darin, bestimmte Attribute nur unter bestimmten Bedingungen zu überprüfen. Beispielsweise zeigt das folgende Codefragment ein Objekt, das nur verifiziert werden kann, wenn das Einstellungslogo aktiviert ist:
Diese Methode ist in allen Fällen nicht am besten geeignet, da sie das Logo aktivieren und die effektiven Ergebnisse manuell zurückgeben müssen. <code class="language-csharp">public class ValidateMe : IValidatableObject
{
[Required]
public bool Enable { get; set; }
[Range(1, 5)]
public int Prop1 { get; set; }
[Range(1, 5)]
public int Prop2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!this.Enable)
{
// 返回有效结果
yield break;
}
else
{
// 检查Prop1和Prop2是否满足其范围要求,并相应地返回结果
if (this.Prop1 < 1 || this.Prop1 > 5)
{
yield return new ValidationResult("Prop1必须在1到5之间", new[] { "Prop1" });
}
if (this.Prop2 < 1 || this.Prop2 > 5)
{
yield return new ValidationResult("Prop2必须在1到5之间", new[] { "Prop2" });
}
}
}
}</code>
Eine andere Methode ist die Verwendung von Validator.try validateProperty () Methode in der Wertmethode. Mit dieser Methode können Sie die Überprüfung für bestimmte Attribute angeben:
in diesem Fall nur, wenn die Überprüfung fehlschlägt, fügt der Validator.tryValidateProperty () -Methode die Bestätigungsergebnisse zum Ergebnissatz hinzu. Durch die Verwendung dieser Methode können Sie die Attribute nach dem Objekt des Objekts bedingt überprüfen, um Ihre Überprüfungslogik flexibler und leichter aufrechtzuerhalten. Beachten Sie, dass hier hinzugefügt wird, um die falschen Attribute klarer zu zeigen. <code class="language-csharp">public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
if (this.Enable)
{
Validator.TryValidateProperty(this.Prop1,
new ValidationContext(this, null, null) { MemberName = "Prop1" },
results);
Validator.TryValidateProperty(this.Prop2,
new ValidationContext(this, null, null) { MemberName = "Prop2" },
results);
// 其他随机测试
if (this.Prop1 > this.Prop2)
{
results.Add(new ValidationResult("Prop1必须大于Prop2", new[] { "Prop1", "Prop2" }));
}
}
return results;
}</code>
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die bedingte Validierung im ASP.NET -Kern mit iValIdatableObject?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!