Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the nextgen-gallery-pro domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/mxvysmpn/public_html/wp-includes/functions.php on line 6121
ASP.NET MVC CheckBox Validations (server and client side) | ASP.NET MVC CheckBox Validations (server and client side) – { Dev Farm }

{ Dev Farm }

Web & Windows Development

ASP.NET MVC CheckBox Validations (server and client side)

| 2 commenti

A very annoing lack in Asp.Net MVC is the checkbox validation.
I need to validate Privacy acceptation in many websites. The best way is to validate both server side and client side, in this way you can make your websites it more usable.

First: add a new validation attribute MustBeTrueAttribute. you can use it besides the other attributes in your Models

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
    public class MustBeTrueAttribute : ValidationAttribute, IClientValidatable
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if ((bool)value)
                return ValidationResult.Success;
            return new ValidationResult(String.Format(ErrorMessageString, validationContext.DisplayName));
        }

        public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            var rule = new ModelClientValidationRule
            {
                ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
                ValidationType = "checkrequired"
            };

            yield return rule;
        }
    }

Second: Extend jQuery validation to get client side check

    if (jQuery.validator) {
        // Checkbox Validation
        jQuery.validator.addMethod("checkrequired", function (value, element, params) {
            var checked = false;
            checked = $(element).is(':checked');
            return checked;
        }, '');
        if (jQuery.validator.unobtrusive) {
            jQuery.validator.unobtrusive.adapters.addBool("checkrequired");
        }
    }

With these two pieces you can now easily validate your checkbox with a simple attribute.
This is a sample how it’s used:

    public class FormContact
    {

        [Display(Name = "Name")]
        [Required]
        public string Name { get; set; }

        [Display(Name = "Email")]
        [DataType(DataType.EmailAddress)]
        [Required]
        public string Email { get; set; }

        [Display(Name = "Privacy")]
        [MustBeTrueAttribute(ErrorMessage = "Please Accept Privacy Policy")]
        public bool Privacy { get; set; }

    }

2 commenti

Lascia un commento

I campi obbligatori sono contrassegnati con *.