Attualmente sto provando a lavorare con la convalida MVC e sto riscontrando alcuni problemi in cui è richiesto un campo a seconda del valore di un altro campo. Un esempio è sotto (che non ho ancora capito) - Se il PaymentMethod == "Check", dovrebbe essere richiesto il ChequeName, altrimenti può essere lasciato passare.Validazione MVC Asp.Net campi dipendenti
[Required(ErrorMessage = "Payment Method must be selected")]
public override string PaymentMethod
{ get; set; }
[Required(ErrorMessage = "ChequeName is required")]
public override string ChequeName
{ get; set; }
sto usando le System.ComponentModel.DataAnnotations per la [Required], e hanno anche esteso un ValidationAttribute per cercare di ottenere questo lavoro, ma non riesco a passare una variabile attraverso di fare la convalida (estensione di seguito)
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;
}
}
Implementazione:
[JEPaymentDetailRequired(PaymentSelected = PaymentMethod, PaymentType = "Cheque", ErrorMessage = "Cheque name must be completed when payment type of cheque")]
qualcuno ha avuto esperienza con questo tipo di convalida? Sarebbe stato meglio scriverlo nel controller?
Grazie per il vostro aiuto.
Ripensandoci ... Come si può impostare il pagamento selezionato = Metodo di pagamento? Dovresti ricevere un errore perché PaymentMethod non è un'espressione costante. – Min
Ciao Min, hai ragione. Ho pensato che potrei essere in grado di farlo in questo modo ma non funziona. Volevo solo mostrare ciò che avevo provato, ma ho anche commentato che non mi avrebbe permesso di passare attraverso la variabile. –