C# 自定义验证属性错误消息未与ValidationMessageFor一起显示

C# 自定义验证属性错误消息未与ValidationMessageFor一起显示,c#,asp.net-mvc,C#,Asp.net Mvc,我有以下自定义验证: [AttributeUsage(AttributeTargets.Property)] public class CollectionNotEmptyAttribute : ValidationAttribute { private const string errorMessage = "'{0}' must have at least one element."; public CollectionNotEmptyAttribute()

我有以下自定义验证:

[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);
    }
}
我的视图模型

public class ProjectViewModel
{
    public ProjectViewModel()
    {
        this.Users = new Collection<UserProjectViewModel>();
    }

    public int ProjectID { get; set; }
    [CollectionNotEmpty]
    public Collection<UserProjectViewModel> Users { get; set; }
}
验证工作正常,
Model.IsValid
如果收集计数低于1,则返回false,但未显示错误消息


任何帮助都将不胜感激。

我认为您应该覆盖其他
有效的
方法:

protected virtual ValidationResult IsValid(
   Object value,
   ValidationContext validationContext
)
因为它允许您返回带有正确错误消息的
ValidationResult

您覆盖的那个只决定结果是否有效

protected virtual ValidationResult IsValid(
   Object value,
   ValidationContext validationContext
)