【问题标题】:Custom Validation Attribute error message not showing with ValidationMessageFor自定义验证属性错误消息未与 ValidationMessageFor 一起显示
【发布时间】:2015-07-15 16:55:16
【问题描述】:

我有这个自定义验证:

[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; }
}

我的观点

@Html.ValidationMessageFor(m => m.Users)

验证工作正常,Model.IsValid 如果收集计数低于 1,则返回 false,但未显示错误消息。

我们将不胜感激。

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    我相信你应该重写其他IsValid 方法:

    protected virtual ValidationResult IsValid(
       Object value,
       ValidationContext validationContext
    )
    

    因为它允许您使用正确的错误消息返回 ValidationResult

    你覆盖的只是决定结果是否有效。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多