自定义验证属性错误消息没有显示ValidationMessageFor
本文关键字:显示 ValidationMessageFor 消息 验证 属性 错误 自定义 | 更新日期: 2023-09-27 18:02:58
我有这个自定义验证:
[AttributeUsage(AttributeTargets.Property)]
public class CollectionNotEmptyAttribute : ValidationAttribute
{
private const string errorMessage = "'{0}' must have at least one element.";
public CollectionNotEmptyAttribute()
: base(errorMessage)
{
}
public override bool IsValid(object value)
{
var collection = value as ICollection;
if (collection != null)
{
return collection.Count > 0;
}
return false;
}
public override string FormatErrorMessage(string name)
{
return String.Format(this.ErrorMessageString, name);
}
}
我viewmodel public class ProjectViewModel
{
public ProjectViewModel()
{
this.Users = new Collection<UserProjectViewModel>();
}
public int ProjectID { get; set; }
[CollectionNotEmpty]
public Collection<UserProjectViewModel> Users { get; set; }
}
我的观点
@Html.ValidationMessageFor(m => m.Users)
验证工作正常,如果集合计数低于1,Model.IsValid
返回false,但是没有显示错误消息。
我认为你应该重写其他IsValid
方法:
protected virtual ValidationResult IsValid(
Object value,
ValidationContext validationContext
)
,因为它允许你返回ValidationResult
与适当的错误信息。
您覆盖的那个只决定结果是否有效