我有一个业务要求,以在允许提交表格之前在HTML表单上执行一个复选框。

如果没有使用适当的消息检查此框,我可以将用户返回表单,但要同时从XVAL验证中返回所有信息。

我在其他地方找不到任何信息,因此可以使用xval验证bool tum(或false),类似于使用 [Range(min, max)] dataannotation或我必须手动 .AddModelError(..) 包含此信息以将错误添加到ViewModel中?

有帮助吗?

解决方案

您是否尝试过创建自己的验证方法?我为这种情况创建了一个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; }
    }
}

其他提示

XVAL必须在复选框上处理所需的字段数据通道,如必须检查。最近,我不得不解决这种情况,因为我试图代表一个不可用的布尔值,而复选框可能是真实的或错误的(只是无效)。但是就您而言,这很好。但是,它提供了必需的字段验证消息,您可能正在寻找“必须接受这些术语”类型消息。

使用XVAL远程规则验证并从AJAX资源验证可能是最容易的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top