Ich versuche derzeit MVC Validierung zu arbeiten, und stoße auf einige Probleme, wo ein Feld abhängig von dem Wert eines anderen Feldes erforderlich ist. Ein Beispiel ist unten (das habe ich noch nicht herausgefunden) - Wenn der PaymentMethod == "Check", dann sollte der ChequeName erforderlich sein, sonst kann es durchgelassen werden.Asp.Net MVC Validation - abhängige Felder
[Required(ErrorMessage = "Payment Method must be selected")]
public override string PaymentMethod
{ get; set; }
[Required(ErrorMessage = "ChequeName is required")]
public override string ChequeName
{ get; set; }
Ich benutze die System.ComponentModel.DataAnnotations für die [Erforderlich], und haben erweitert auch ein Validation diese Funktion zu versuchen und zu erhalten, aber ich kann nicht eine Variable übergeben durch die Validierung zu tun (Erweiterung unten)
public class JEPaymentDetailRequired : ValidationAttribute
{
public string PaymentSelected { get; set; }
public string PaymentType { get; set; }
public override bool IsValid(object value)
{
if (PaymentSelected != PaymentType)
return true;
var stringDetail = (string) value;
if (stringDetail.Length == 0)
return false;
return true;
}
}
Umsetzung:
[JEPaymentDetailRequired(PaymentSelected = PaymentMethod, PaymentType = "Cheque", ErrorMessage = "Cheque name must be completed when payment type of cheque")]
hat jemand schon Erfahrung mit dieser Art von Prüfung? Wäre es nur besser, es in den Controller zu schreiben?
Danke für Ihre Hilfe.
Auf den zweiten Gedanken ... Wie können Sie die PaymentSelected = PaymentMethod? Sie sollten einen Fehler erhalten, da PaymentMethod kein konstanter Ausdruck ist. – Min
Hallo Min, du hast Recht. Ich dachte, dass ich es vielleicht so machen könnte, aber es funktioniert nicht. Ich wollte nur zeigen, was ich versucht hatte, aber auch kommentieren, dass es mir nicht erlaubte, die Variable zu passieren. –