我有一个业务要求,在允许提交表单之前强制将 HTML 表单上的复选框标记为 true。
如果此框没有被适当的消息选中,我可以将用户返回到表单,但希望同时从表单数据的 xVal 验证中返回所有信息。
我在其他地方找不到任何信息,因此是否可以使用 xVal 将布尔值验证为真(或假),类似于使用[Range(min, max)]
DataAnnotation 或者我必须手动.AddModelError(..)
包含此信息以将错误添加到 ViewModel?
我有一个业务要求,在允许提交表单之前强制将 HTML 表单上的复选框标记为 true。
如果此框没有被适当的消息选中,我可以将用户返回到表单,但希望同时从表单数据的 xVal 验证中返回所有信息。
我在其他地方找不到任何信息,因此是否可以使用 xVal 将布尔值验证为真(或假),类似于使用[Range(min, max)]
DataAnnotation 或者我必须手动.AddModelError(..)
包含此信息以将错误添加到 ViewModel?
您是否尝试过创建自己的 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; }
}
}
xVal 将复选框上的必填字段数据注释视为必须选中的。我最近不得不解决这种情况,因为我试图表示一个不可为空的布尔值,其中复选框可以为真或假(只是不为空)。但在你的情况下,这很完美。但是,它提供了一个必填字段验证消息,您可能正在寻找“必须接受这些条款”类型的消息。
使用 xval 远程规则验证可能是最简单的,并从 ajax 资源进行验证。