Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 验证器在客户端是如何工作的?_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 验证器在客户端是如何工作的?

Asp.net mvc 3 验证器在客户端是如何工作的?,asp.net-mvc-3,Asp.net Mvc 3,我正在开发一个简单的验证器。它可以很好地处理服务器端请求,但由于禁止回发,它在客户端不起作用。Net的RequiredAttribute验证程序在客户端工作,不需要回发 如何更改我的验证器以使其工作正常 我的验证器得到一个字符串,并检查它是否至少有5个字符长 [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = fals

我正在开发一个简单的验证器。它可以很好地处理服务器端请求,但由于禁止回发,它在客户端不起作用。Net的
RequiredAttribute
验证程序在客户端工作,不需要回发

如何更改我的验证器以使其工作正常

我的验证器得到一个字符串,并检查它是否至少有5个字符长

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | 
  AttributeTargets.Parameter, AllowMultiple = false)]
public class MyValidatorAttribute : ValidationAttribute
{
    private readonly int _length = 0;

    public MyValidatorAttribute(int length)
    {
        _length = length;
    }

    protected override ValidationResult IsValid(object value, 
                                         ValidationContext validationContext)
    {
        if (value != null)
        {
            string data = (string)value;
            if (data.Length < _length)
            {
                return new ValidationResult("length is short");
            }
        }
        return ValidationResult.Success;
    }
}

public class MyValidator : DataAnnotationsModelValidator<MyValidatorAttribute>
{
    int minlength = 5;
    string errorMsg = string.Empty;

    public MyValidator(ModelMetadata metadata, 
                       ControllerContext context, 
                       MyValidatorAttribute attribute)
        : base(metadata, context, attribute)
    {
        errorMsg = attribute.ErrorMessage;
    }

    public override IEnumerable<ModelClientValidationRule> 
                                GetClientValidationRules()
    {
        ModelClientValidationRule validationRule = 
                                  new ModelClientValidationRule();

        validationRule.ErrorMessage = errorMsg;
        validationRule.ValidationType = "MyValidator";

        validationRule.ValidationParameters.Add("minlength", minlength);

        return new[] { validationRule };

    }
}
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field |
AttributeTargets.Parameter,AllowMultiple=false)]
公共类MyValidatorAttribute:ValidationAttribute
{
私有只读int _length=0;
公共MyValidator属性(整型长度)
{
_长度=长度;
}
受保护的覆盖验证结果有效(对象值,
ValidationContext(验证上下文)
{
if(值!=null)
{
字符串数据=(字符串)值;
如果(数据长度<_长度)
{
返回新的ValidationResult(“长度较短”);
}
}
返回ValidationResult.Success;
}
}
公共类MyValidator:DataAnnotationsModelValidator
{
int minlength=5;
string errorMsg=string.Empty;
公共MyValidator(模型元数据、,
ControllerContext上下文,
MyValidator属性)
:base(元数据、上下文、属性)
{
errorMsg=attribute.ErrorMessage;
}
公共覆盖IEnumerable
GetClientValidationRules()
{
ModelClientValidationRule validationRule=
新建ModelClientValidationRule();
validationRule.ErrorMessage=errorMsg;
validationRule.ValidationType=“MyValidator”;
validationRule.ValidationParameters.Add(“minlength”,minlength);
返回新的[]{validationRule};
}
}

我冒昧地重新表述了你的问题。请检查这是否是你真正的意思。并不总是很清楚。请看一下: