Подтвердите bool, который должен быть верным, используя xVal - PullRequest
1 голос
/ 21 января 2010

У меня есть бизнес-требование установить флажок в HTML-форме, чтобы пометить его как true, прежде чем разрешить отправку формы.

Я могу вернуть пользователя в форму, если этот флажок не был отмечен соответствующим сообщением, но хочу вернуть всю информацию из проверки xVal данных формы одновременно.

Я не могу найти какую-либо информацию в другом месте, поэтому возможно ли использовать xVal для проверки bool на true (или false), аналогично использованию [Range(min, max)] DataAnnotation или я должен вручную .AddModelError(..), содержащий эту информацию, добавить ошибка в ViewModel?

Ответы [ 2 ]

4 голосов
/ 23 января 2010

Вы пытались создать свой собственный атрибут Validation? Я создал TrueTypeAttribute для такого рода ситуаций.

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; }
    }
}
1 голос
/ 21 января 2010

xVal обрабатывает обязательное поле данных аннотации на флажке, как и должно быть отмечено. Недавно мне пришлось обойти эту ситуацию, так как я пытался представить ненулевое логическое значение, где флажок мог быть истинным или ложным (просто не нулевым). Но в вашем случае это работает отлично. Тем не менее, он дает обязательное сообщение для проверки поля, где вы, возможно, ищете сообщение типа «должен принять эти условия».

Возможно, проще всего использовать удаленную проверку правил xval и проверку с помощью ресурса ajax.

...