Validieren Sie einen Bool, der mit XVAL wahr sein muss
-
22-09-2019 - |
Frage
Ich habe die geschäftliche Anforderung, ein Kontrollkästchen in einem HTML -Formular durchzusetzen, das als wahr markiert werden soll, bevor das Formular eingereicht wird.
Ich kann den Benutzer in das Formular zurückgeben, wenn dieses Feld nicht mit einer entsprechenden Nachricht überprüft wurde, aber alle Informationen gleichzeitig aus einer XVAL -Validierung der Formulardaten zurückgeben möchte.
Ich kann an anderer Stelle keine Informationen finden. Ist es also möglich, XVAL zu verwenden, um einen Bool auf wahr (oder Falsch) zu validieren, ähnlich wie bei der Verwendung der Verwendung [Range(min, max)]
DataAnnotation oder muss ich manuell .AddModelError(..)
Enthält diese Informationen, um den Fehler zum ViewModel hinzuzufügen?
Lösung
Haben Sie versucht, Ihre eigene ValidationAttribute zu erstellen? Ich habe ein TruetypeAttribute für diese Art von Situation erstellt.
using System;
using System.ComponentModel.DataAnnotations;
namespace KahunaCentralMVC.Data.ModelValidation.CustomValidationAttributes
{
public class TrueTypeAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null) return false;
bool newVal;
try
{
newVal = Convert.ToBoolean(value);
if (newVal)
return true;
else
return false;
}
catch (InvalidCastException)
{
return false;
}
}
}
}
[MetadataType(typeof(FooMetadata))]
public partial class Foo
{
public class FooMetadata
{
[Required(ErrorMessage = " [Required] ")]
[TrueTypeAttribute(ErrorMessage = " [Required] ")]
public bool TruVal { get; set; }
}
}
Andere Tipps
XVAL behandelt eine erforderliche Felddatenanotation in einem Kontrollkästchen, wie es überprüft werden muss. Ich musste kürzlich in dieser Situation arbeiten, als ich versuchte, einen nicht nullbaren Booleschen zu repräsentieren, in dem das Kontrollkästchen wahr oder falsch sein könnte (nur nicht null). Aber in Ihrem Fall funktioniert dies perfekt. Es gibt jedoch eine erforderliche Meldung zum Feldvalidierungsnachricht, in der Sie möglicherweise nach einer "Muss diese Begriffe akzeptieren" -Typnachrichten suchen.
Es ist möglicherweise am einfachsten, die XVAL -Remote -Regelvalidierung zu verwenden und aus einer AJAX -Ressource zu validieren.