Pregunta

Tengo un requisito comercial para hacer cumplir una casilla de verificación en un formulario HTML para ser marcado como verdadero antes de permitir la presentación del formulario.

Puedo devolver al usuario al formulario si este cuadro no se ha marcado con un mensaje apropiado, pero quiero devolver toda la información de una validación XVAL de los datos del formulario al mismo tiempo.

No puedo encontrar ninguna información en otro lugar, por lo que es posible usar XVAL para validar un bool a verdadero (o falso), similar a usar el [Range(min, max)] DataNannotation o debo hacerlo manualmente .AddModelError(..) ¿Contiene esta información para agregar el error al Modelo View?

¿Fue útil?

Solución

¿Has intentado crear tu propia validación Ttribute? Creé un trueTypeAttribute para este tipo de situación.

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

Otros consejos

XVAL trata una explicación de datos de campo requerida en una casilla de verificación, como se debe verificar. Recientemente tuve que trabajar en torno a esta situación, ya que estaba tratando de representar a un booleano no anulable donde la casilla de verificación podría ser verdadera o falsa (simplemente no nula). Pero en su caso esto funciona perfectamente. Sin embargo, proporciona un mensaje de validación de campo requerido donde quizás esté buscando un mensaje de tipo "Debe aceptar estos Términos".

Puede ser más fácil utilizar la validación de reglas remotas XVAL y validar desde un recurso AJAX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top