我有业务要求强制执行HTML窗体上的复选框是真布尔被标记允许提交表单之前为真。验证必须使用XVAL
我可以将用户返回到窗体如果此框未被选中用适当的消息,但要在同一时间从表单数据的验证XVAL返回的所有信息。
我不能在别的地方找到的任何信息,所以是有可能使用XVAL来验证一个bool为真(或假),类似于使用[Range(min, max)]
DataAnnotation或必须我手动.AddModelError(..)
包含该信息的错误添加到ViewModel?
我有业务要求强制执行HTML窗体上的复选框是真布尔被标记允许提交表单之前为真。验证必须使用XVAL
我可以将用户返回到窗体如果此框未被选中用适当的消息,但要在同一时间从表单数据的验证XVAL返回的所有信息。
我不能在别的地方找到的任何信息,所以是有可能使用XVAL来验证一个bool为真(或假),类似于使用[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治疗上的复选框必填字段dataannotation,因为必须检查。最近我不得不解决这种情况,因为我试图表示一个不可空的布尔值,其中复选框可以是真或假(只是不为空)。但在你的情况下,这完美地运作。但是,如果您正在寻找“必须接受这些条款”类型的消息,它会提供必要的字段验证消息。
这可能是最容易使用的远程XVAL规则验证,并从阿贾克斯资源验证。
幸运的是,复选框的作用是充当特定窗体的签名,所以默认消息在这种情况下是完全合适的。谢谢@ jacerhea。如果有人寻找类似的答案需要留下不同的信息,我只是没有将其标记为答案。 – StuperUser 2010-02-09 15:00:40
感谢@MHinton,这对于添加默认以外的消息非常有用。由于默认消息是合适的,我将使用@jacerhea建议的[必需的]注释。 – StuperUser 2010-02-09 14:44:59