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

萨雷卡·阿维纳什(Sareka Avinash)

我有一个像

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

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

我已经编写了一个自定义验证,并计划重写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; }
}

在我的代码中,此验证应在没有页面刷新/回发的情况下触发

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

萨雷卡·阿维纳什(Sareka Avinash)

由于我没有将页面发布到服务器,因此IsValid()不会触发

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章