Domanda

Ho un requisito aziendale per applicare una casella di controllo su un modulo HTML da contrassegnare come vero prima di consentire l'invio del modulo.

Posso restituire l'utente al modulo se questa casella non è stata verificata con un messaggio appropriato, ma desidero restituire tutte le informazioni da una convalida XVAL dei dati del modulo contemporaneamente.

Non riesco a trovare alcuna informazione altrove, quindi è possibile utilizzare XVAL per convalidare un bool su vero (o falso), simile all'uso del [Range(min, max)] DataNnotazione o devo manualmente .AddModelError(..) Contenendo queste informazioni per aggiungere l'errore a ViewModel?

È stato utile?

Soluzione

Hai provato a creare la tua validazione? Ho creato un TrueTypeAttribute per questo tipo di situazione.

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

Altri suggerimenti

XVAL tratta una dataNnotazione del campo richiesta su una casella di controllo, come deve essere verificata. Di recente ho dovuto aggirare questa situazione mentre stavo cercando di rappresentare un booleano non nullo in cui la casella di controllo poteva essere vera o falsa (solo non null). Ma nel tuo caso questo funziona perfettamente. Tuttavia, fornisce un messaggio di convalida del campo richiesto in cui forse stai cercando un messaggio di tipo "deve accettare questi termini".

Potrebbe essere più facile utilizzare la convalida della regola remota XVAL e convalidare da una risorsa AJAX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top