自定义的验证MVC +验证客户端 [英] custom validator MVC + validation client side

查看:129
本文介绍了自定义的验证MVC +验证客户端的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建MVC 4定制validateur:

 公共类FirstNameValidator:ValidationAttribute
{
    私人IRegistrationConfiguration _registrationConfiguration;
    公共字符串类别{搞定;组; }
    公共BOOL IsLocal {搞定;组; }
    公共FirstNameValidator()
    {
        _registrationConfiguration = DependencyResolver.Current.GetService< IRegistrationConfiguration>();
    }
    公共FirstNameValidator(IRegistrationConfiguration registrationConfiguration)
    {
        _registrationConfiguration = registrationConfiguration;
    }    保护覆盖的ValidationResult的IsValid(对象的值,ValidationContext validationContext)
    {
         如果(价值== NULL)
        {            返回新的ValidationResult(乐prénomNE DOIT PAS理由韦迪);
        }
         其他
         {
             如果(string.IsNullOrEmpty(value.ToString()))
                 返回新的ValidationResult(乐prénomNE DOIT PAS理由韦迪);
               否则,如果(value.ToString()长度< 2)
                 返回新的ValidationResult(乐prénomDOIT avoir + 2阙CARACTERES);
             否则如果(value.ToString()长度方式> 30)的
                 返回新的ValidationResult(乐prénomDOIT avoir - 阙30 CARACTERES);         }         返回null;    }}

我用户在我的ViewModel此数据注解:

 公共类RegistrationViewModel
{
    公共字符串国家{搞定;组; }
    公共字符串文明{搞定;组; }
    [FirstNameValidator(分类=注册,IsLocal = FALSE)]
    公共字符串名字{获得;组; }
    公共字符串名字{获得;组; }

}

如何能做到客户端验证??


解决方案

  1. 在您的属性实现IClientValidatable。

    公共类FirstNameValidator:ValidationAttribute,IClientValidatable


  2. 编写JavaScript适配器,它包括在您的视图。


  3. 编写JavaScript验证规则本身,包括它在你的看法。


您可以搜索更多的细节asp.net mvc的4定制的客户端验证。
例如,你可以看看<一个href=\"http://odeto$c$c.com/Blogs/scott/archive/2011/02/22/custom-data-annotation-validator-part-ii-client-$c$c.aspx\"相对=nofollow>自定义数据注释验证或<一个href=\"http://hossamhassan47.word$p$pss.com/2012/12/09/mvc-4-0-how-to-support-client-side-custom-validation/\"相对=nofollow>如何支持客户端自定义验证

I create a custom validateur in MVC 4:

public class FirstNameValidator : ValidationAttribute
{
    private IRegistrationConfiguration _registrationConfiguration;
    public string Category { get; set; }
    public bool IsLocal { get; set; }
    public FirstNameValidator()
    {
        _registrationConfiguration = DependencyResolver.Current.GetService<IRegistrationConfiguration>();
    }
    public FirstNameValidator(IRegistrationConfiguration registrationConfiguration)
    {
        _registrationConfiguration = registrationConfiguration;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
         if (value == null)
        { 

            return new ValidationResult("Le prénom ne doit pas être vide");
        }
         else
         {
             if(string.IsNullOrEmpty(value.ToString()))
                 return new ValidationResult("Le prénom ne doit pas être vide");
               else if(value.ToString().Length<2)
                 return new ValidationResult("Le prénom doit avoir + que 2 caractères");
             else if (value.ToString().Length > 30)
                 return new ValidationResult("Le prénom doit avoir - que 30 caractères");

         }

         return null;

    }

}

i user this data annotation in my viewModel:

 public class RegistrationViewModel
{
    public string Country { get; set; }
    public string Civility { get; set; }
    [FirstNameValidator(Category = "Registration", IsLocal = false)]
    public string FirstName { get; set; }
    public string LastName { get; set; }

}

How can i do client-side validation ??

解决方案

  1. Implement IClientValidatable in your attribute.

    public class FirstNameValidator : ValidationAttribute, IClientValidatable

  2. Write javascript adapter and include it in your view.

  3. Write javascript validation rule itself and include it in your view.

You can search "asp.net mvc 4 custom client side validation" for more details. For example, you can look Custom data annotation validator or How to support client side custom validation

这篇关于自定义的验证MVC +验证客户端的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆