validate net mvc bootstrap attribute asp jquery jquery-validate asp.net-mvc-4 custom-attributes unobtrusive-validation

jquery - mvc - validation net core



Comprender el método $.validator.unobtrusive.adapters.addBool() (1)

Estoy tratando de entender algo.

De este blogpost http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

Bridging HTML y jQuery Validate: adaptadores

Escribir un validador en el lado del cliente implica dos pasos: escribir el validador para jQuery Validate y escribir el adaptador que toma los valores de los parámetros de los atributos HTML y los convierte en jQuery Validate metadata . El tema anterior no está en el alcance de esta publicación de blog (ya que en realidad no es MVC específico).

Hay una colección de adaptadores disponible en jQuery.validator.unobtrusive.adapters. La suspensión de la colección de adaptadores es el método de registro del adaptador (agregar) y tres auxiliares que se pueden usar para registrar tipos de adaptadores muy comunes (addBool, addSingleVal y addMinMax).

Tenga en cuenta que dice dos pasos.

Pero si le echas un vistazo a este post MVC3: ¿se requiere checkbox mediante jQuery validate? solo necesita el segundo paso ("escribir el adaptador") para que la validación funcione, agregando esta línea de código:

$.validator.unobtrusive.adapters.addBool("mandatory", "required");

Probé el código en una nueva aplicación de Internet MVC 4 y funciona bien, aquí está la muestra superrápida.

Ver modelo

public class SimpleViewModel { [Mandatory(ErrorMessage = "You must agree to the Terms to register.")] [Display(Name = "Terms Accepted")] public bool IsTermsAccepted { get; set; } }

Atributo de Validación

public class MandatoryAttribute : ValidationAttribute, IClientValidatable { public override bool IsValid(object value) { return (!(value is bool) || (bool)value); } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { ModelClientValidationRule rule = new ModelClientValidationRule(); rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()); rule.ValidationType = "mandatory"; yield return rule; } }

Ver

@model MvcApplication2.Models.SimpleViewModel @{ ViewBag.Title = ""; } @using (Html.BeginForm()) { @Html.ValidationSummary() @Html.CheckBoxFor(model => model.IsTermsAccepted) @Html.ValidationMessageFor(model => model.IsTermsAccepted) <input type="submit" value="Send" /> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") <script type="text/javascript"> $.validator.unobtrusive.adapters.addBool("mandatory", "required"); </script> }

Entonces, básicamente, tengo tres preguntas:

  1. es $ .validator.unobtrusive.adapters.addBool ("obligatorio", "requerido"); ¿realmente lo único que necesitas además de escribir una clase de atributo?

  2. ¿Qué es exactamente lo que hace detrás de las escenas?

  3. ¿Dónde puedo encontrar buena documentación sobre addBool?


Además del artículo @BlueChippy vinculado en los comentarios, encontré la respuesta a 2. en este artículo .

  1. sí, eso es lo único que se necesita además del atributo. Eso es porque usamos una regla que ya existe ( requerida ).
  2. ¿Qué hace?

Esto solo registra un nuevo adaptador de validación para MandatoryAttribute , donde el primer parámetro es el nombre del adaptador y el segundo parámetro es el nombre de la regla de validación de jQuery. El nombre del adaptador debe coincidir con el valor que hemos especificado anteriormente como tipo de validación, y la regla requerida jQuery validation requerirá que el usuario marque la casilla de verificación.

3. Se puede encontrar más información en este artículo en el blog de Brad Wilson .