Actualmente estoy intentando trabajar con la validación MVC, y me estoy enfrentando a algunos problemas donde se requiere un campo dependiendo del valor de otro campo. A continuación, se incluye un ejemplo (que aún no he descifrado): si PaymentMethod == "Check", se debe solicitar ChequeName; de lo contrario, se puede pasar.Validación Asp.Net MVC - campos dependientes
[Required(ErrorMessage = "Payment Method must be selected")]
public override string PaymentMethod
{ get; set; }
[Required(ErrorMessage = "ChequeName is required")]
public override string ChequeName
{ get; set; }
estoy usando los System.ComponentModel.DataAnnotations para el [Obligatorio], y también se han extendido una ValidationAttribute para tratar de conseguir este trabajo, pero no puedo pasar una variable a través de hacer la validación (extensión a continuación)
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;
}
}
Implementación:
[JEPaymentDetailRequired(PaymentSelected = PaymentMethod, PaymentType = "Cheque", ErrorMessage = "Cheque name must be completed when payment type of cheque")]
alguien ha tenido experiencia con este tipo de validación? ¿Sería mejor escribirlo en el controlador?
Gracias por su ayuda.
Pensándolo bien ... ¿Cómo se puede configurar PaymentSelected = PaymentMethod? Debería recibir un error porque PaymentMethod no es una expresión constante. – Min
Hola Min, tienes razón. Pensé que podría hacerlo de esta manera, pero no funciona. Solo quería mostrar lo que había intentado, pero también comenté que no me permitiría pasar la variable. –