Estoy tratando de entender algo.
De esta entrada de blog http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
Bridging HTML y jQuery Validar: Adaptadores
Escribiendo un validador del lado del cliente implica dos pasos: escribir el validador para jQuery Validar, y escribir el adaptador que lleva los valores del parámetro de los atributos HTML y lo convierte en jQuery Validar metadatos. El tema anterior no está en el alcance de este blog publicación (ya que realmente no es MVC específico).
Hay una colección de adaptadores disponible en jQuery.validator.unobtrusive.adapters. Colgando del adaptador , la colección 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).
Observe que dice dos pasos.
Pero si se echa un vistazo a este post MVC3: make checkbox required via jQuery validate? sólo necesita el segundo paso ("escribir el adaptador") para la validación de trabajar - mediante la adición de esta línea de código:
$.validator.unobtrusive.adapters.addBool("mandatory", "required");
Probé a cabo 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; }
}
validación de atributos
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>
}
Así que, básicamente Tengo tres preguntas:
es $ .validator.unobtrusive.adapters.addBool ("obligatorio", "obligatorio"); ¿realmente lo único que necesitas además de escribir una clase de atributo?
¿Qué hace exactamente detrás de escena?
¿Dónde puedo encontrar buena documentación acerca de addBool?
1: Solo para adaptadores "ya existentes". 2: No estoy seguro, esperando descubrirlo. 3: ¡Si encuentra uno, hágamelo saber! – BlueChippy
http://thewayofcode.wordpress.com/2012/01/18/custom-unobtrive-jquery-validation-with-data-annotations-in-mvc-3/ – BlueChippy