Wie kann ich ein benutzerdefiniertes Validierungsattribut mit clientseitiger Validierung erstellen, ohne IClientValidatable
zu implementieren?ASP.NET MVC: Implementieren der clientseitigen Validierung mit Attribut ohne IClientValidatable
Wie wird die System.ComponentModel.DataAnnotations.RequiredAttribute
Client-Seite validiert?
Der Grund dafür ist, weil ich Objekte aus Klassen in einem anderen Projekt als Modelle in meinen Ansichten verwenden, und ich möchte nicht die System.Web.MVC
Referenz zu diesem Projekt hinzufügen.
EDIT weitere Informationen hinzuzufügen:
Ich weiß, dass
IClientValidatable
Brauch hinzuzufügen verwendet wird Attribute der HTML durch die unaufdringliche Validierung später verwendet werden.Ich weiß, ich muss den Javascript-Code hinzufügen, um die Validierung in der Client zu machen.
Was ich nicht weiß, ist, wie die Informationen aus dem Attribut benutzerdefinierten Validierung zu verwenden, um die erforderlichen Attribute der HTML hinzufügen für eine unauffällige Validierung zu arbeiten.
Dies ist meine benutzerdefinierte Validierung Attribut:
public class RequiredGuidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
Guid? guidValue = value as Guid?;
if (guidValue == null)
return false;
return guidValue != Guid.Empty;
}
}
Das ist mein Grundstück mit dem Attribut angewendet:
[RequiredGuid(ErrorMessageResourceType = typeof(ClientOrderResources), ErrorMessageResourceName = "RequiredShippingMethod")]
public Guid ShippingMethodId
{
get { return GetProperty(ShippingMethodIdProperty); }
set { SetProperty(ShippingMethodIdProperty, value); }
}
Und schließlich einen versteckten Eingang für diese Eigenschaft in der Ansicht Ich bin Rendering mit Html.HiddenFor
.
Nun, wie bekomme ich die Fehlermeldung aus dem Attribut, um es auf die HTML anwenden? Sollte ich es selbst mit Reflection machen oder gibt es einen besseren Weg?
Und dann, wie kann ich Html.HiddenFor
sagen, diese Informationen zu verwenden, um dem HTML die notwendigen Attribute hinzuzufügen?
Es tut mir leid, aber es muss ein Weg sein, weil die Attribute von DataAnnotations von den HTML-Helfern erkannt werden und sie html mit den für die Client-Validierung erforderlichen Attributen ausgeben. Ich weiß, dass ich Client-Skript hinzufügen muss, und das ist kein Problem. – Marques