IsValid 方法在 MVC 中的自定义必需验证属性中不起作用,我没有使用 ModelState.IsValid

IsValid method is not working in custom required validation attribute in MVC and i am not using ModelState.IsValid

我有一个模型像

public class Employee
{
    [Required]
    [RegularExpression]
    public string Name { get; set; }
}

当我在文本框中键入空格时,必填字段验证不会触发(尽管我保留了 Required 验证的 AllowEmptyString 属性)。

我已经编写了自定义验证并计划如下覆盖 IsValid()

[AttributeUsage(AttributeTargets.Property)]
public class CustomRequiredValidatiorAttribute : ValidationAttribute, IClientValidatable
{
    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metaData, ControllerContext context)
    {
        if (metaData == null)
        {
            throw new ArgumentNullException(nameof(metaData));
        }

        var rule = new ModelClientValidationRule
            {
                ErrorMessage = "Error msg",
            };

        rule.ValidationType = "required";
        rule.ValidationParameters["propertynames"] = metaData.PropertyName;

        yield return rule;
    }

    public override bool IsValid(object value)
    {
        // some logic
    }
}  

模特看起来像

public class Employee
{
    [CustomRequiredValidatiorAttribute]
    [RegularExpression]
    public string Name { get; set; }
}

在我的代码中,此验证应该在没有页面的情况下触发 refresh/postback

但是 IsValid() 没有被调用,有人可以帮我解决这个问题吗?

因为我没有将页面发布到服务器 IsValid() 不会触发