【发布时间】:2019-08-21 02:38:07
【问题描述】:
下面是我教科书中的自定义属性验证
public class MustBeTrueAttribute : Attribute, IModelValidator
{
public bool IsRequired => true;
public string ErrorMessage { get; set; }
public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context)
{
bool? value = context.Model as bool?;
if (!value.HasValue || value.Value == false)
{
return new List<ModelValidationResult> {
new ModelValidationResult("", ErrorMessage) // why first argument has to be empty?
};
}
else
{
return Enumerable.Empty<ModelValidationResult>();
}
}
}
public class Appointment
{
public DateTime Date { get; set; }
[MustBeTrue(ErrorMessage = "You must accept the terms")]
public bool TermsAccepted { get; set; }
}
我有两个问题:
Q1-IModelValidator 接口没有定义IsRequired 属性,它来自哪里以及如何使用这个属性?
Q2-为什么ModelValidationResult的构造函数中的第一个参数(memberName)必须为空“”,什么情况下需要指定一个值
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-core-mvc