span - obtener el texto de un button jquery
Requerir validaciĆ³n solo si el campo es visible (4)
Estoy usando el atributo [Required]
para la validación del lado del cliente en ASP.NET MVC 3.
La clase se ve como:
public class User
{
[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
}
Quiero que el campo FirstName
se valide solo si está visible, que se mostrará solo en ciertas condiciones. ¿Cómo puedo hacer eso?
He usado lo siguiente, pero aún parece validar el campo requerido de ese campo oculto.
$(''#registerForm'').validate({ ignore: ":not(:visible)" });
Con algunos consejos útiles de @Josiah, puedo llegar a mi requerimiento.
Agregue la clase RequiredIfAttribute y el javascript requerido. Consulte la validación condicional en ASP.NET MVC 3
Y en la clase agregue el atributo RequiredIf
como:
public class User
{
[RequiredIf("hFirstName", "true", ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
y en aspx:
@Html.TextBoxFor(model => Model.FirstName, new { @style = "height:auto;" })
@Html.ValidationMessageFor(model => Model.FirstName)
@Html.Hidden("hFirstName")
Establezca el valor de hFirstName
en ''verdadero'' si el campo Nombre está oculto y ''falso'', si está visible.
La magia trabaja con estos cambios. Gracias a @Josiah Ruddell por su answer
Prueba mi atributo de validación personalizado:
[ConditionalRequired("hFirstName==true")]
public string FirstName {get, set};
Soporta múltiples condiciones.
Un poco tarde,
namespace System.ComponentModel.DataAnnotations
{
public class RequiredIfVisibleAttribute : RequiredAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext context)
{
if (HttpContext.Current.Request.Form.AllKeys.Contains(context.MemberName))
return base.IsValid(value, context);
return ValidationResult.Success;
}
}
}
Pero aquí está mi solución.
Solo una herencia de Requerido que actuará de la misma manera, excepto que solo se activará si el campo está incluido en las claves publicadas.
Yo crearía un atributo condicionalmente requerido. Hay un buen artículo sobre cómo crear uno con la validación de jQuery aquí .
Otra opción: puede hacer referencia a un proyecto como la validación Foolproof (codeplex) que proporciona esta funcionalidad y los scripts del cliente.
Además, puede utilizar ajax para cargar sus vistas parciales para que nunca estén en la página cuando están ocultas. Esto evitaría la validación condicional por completo.