Question

J'ai une exigence commerciale pour faire respecter une case à cocher sur un formulaire HTML à marquer comme vrai avant de permettre la soumission du formulaire.

Je peux renvoyer l'utilisateur à la forme si cette case n'a pas été vérifiée avec un message approprié, mais que vous souhaitez retourner toutes les informations d'une validation xVal des données de formulaire en même temps.

Je ne peux trouver aucune information ailleurs, donc est-il possible d'utiliser xVal pour valider une bool true (ou faux), similaire à l'utilisation du DataAnnotation de [Range(min, max)] ou dois-je .AddModelError(..) manuellement contenant ces informations pour ajouter l'erreur au ViewModel?

Était-ce utile?

La solution

Avez-vous essayé de créer votre propre ValidationAttribute? J'ai créé un TrueTypeAttribute pour ce genre de situation.

using System;
using System.ComponentModel.DataAnnotations;

namespace KahunaCentralMVC.Data.ModelValidation.CustomValidationAttributes
{
    public class TrueTypeAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            if (value == null) return false;
            bool newVal;
            try
            {
                newVal = Convert.ToBoolean(value);
                if (newVal)
                    return true;
                else
                    return false;
            }
            catch (InvalidCastException)
            {
                return false;
            }
        }
    }
}

[MetadataType(typeof(FooMetadata))]
public partial class Foo
{
    public class FooMetadata
    {
        [Required(ErrorMessage = " [Required] ")]
        [TrueTypeAttribute(ErrorMessage = " [Required] ")]
        public bool TruVal { get; set; }
    }
}

Autres conseils

xVal traite un champ dataannotation requis sur une case à cocher, comme cela doit être vérifié. Je devais travailler dans cette situation récemment alors que je tentais de représenter un booléen non annulable où la case pourrait être vrai ou faux (tout simplement pas null). Mais cela fonctionne parfaitement dans votre cas. Cependant, il donne un message de validation de champ obligatoire où vous cherchez peut-être un message de type « doit accepter ces termes ».

Il est peut-être plus facile à utiliser la validation des règles à distance xval et valider à partir d'une ressource ajax.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top