1

我有一个业务要求,在允许提交表单之前强制将 HTML 表单上的复选框标记为 true。

如果此框没有被适当的消息选中,我可以将用户返回到表单,但希望同时从表单数据的 xVal 验证中返回所有信息。

我在其他地方找不到任何信息,因此是否可以使用 xVal 将布尔值验证为真(或假),类似于使用[Range(min, max)]DataAnnotation 或者我必须手动.AddModelError(..)包含此信息以将错误添加到 ViewModel?

4

2 回答 2

4

您是否尝试过创建自己的 ValidationAttribute?我为这种情况创建了一个 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; }
    }
}
于 2010-01-22T21:58:44.477 回答
1

xVal 将复选框上的必填字段数据注释视为必须选中的。我最近不得不解决这种情况,因为我试图表示一个不可为空的布尔值,其中复选框可以为真或假(只是不为空)。但在你的情况下,这很完美。但是,它提供了一个必填字段验证消息,您可能正在寻找“必须接受这些条款”类型的消息。

使用 xval 远程规则验证可能是最简单的,并从 ajax 资源进行验证。

于 2010-01-21T15:55:45.933 回答