Pergunta

Tenho um requisito comercial para aplicar uma caixa de seleção em um formulário HTML para ser marcado como verdadeiro antes de permitir o envio do formulário.

Posso devolver o usuário ao formulário se esta caixa não tiver sido verificada com uma mensagem apropriada, mas deseja retornar todas as informações de uma validação XVAL dos dados do formulário ao mesmo tempo.

Não consigo encontrar nenhuma informação em outro lugar, por isso é possível usar o XVAL para validar um bool para verdadeiro (ou falso), semelhante ao uso do [Range(min, max)] Dataannotation ou devo manualmente .AddModelError(..) contendo essas informações para adicionar o erro ao ViewModel?

Foi útil?

Solução

Você já tentou criar sua própria validaçãoTtribute? Eu criei um TruetyPeattribute para esse tipo de situação.

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; }
    }
}

Outras dicas

O XVAL trata uma renovação de dados de campo necessária em uma caixa de seleção, como deve ser verificado. Eu tive que contornar essa situação recentemente, pois estava tentando representar um booleano não nulo, onde a caixa de seleção poderia ser verdadeira ou falsa (apenas não nula). Mas, no seu caso, isso funciona perfeitamente. No entanto, fornece uma mensagem de validação de campo necessária, onde você talvez esteja procurando uma mensagem de tipo "deve aceitar estes termos".

Pode ser mais fácil usar a validação de regra remota XVAL e validar de um recurso Ajax.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top