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() 不会触发
我有一个模型像
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() 不会触发