Esempio n. 1
0
        protected override void SetModelValidationRule(ModelClientValidationRule rule)
        {
            base.SetModelValidationRule(rule);

            Match match = Field.vtypeRuleRe.Match(rule.ValidationType ?? "");

            if (match.Success)
            {
                this.Vtype     = match.Groups[1].Value;
                this.VtypeText = rule.ErrorMessage;
                if (rule.ValidationParameters.Count > 0)
                {
                    this.VTypeParams.AddRange(rule.ValidationParameters.Select(pair => new Parameter(pair.Key, JSON.Serialize(pair.Value), ParameterMode.Raw)));
                }
            }
            else
            {
                match = Field.validatorRuleRe.Match(rule.ValidationType ?? "");
                if (match.Success)
                {
                    this.Validator.Fn  = match.Groups[1].Value;
                    this.ValidatorText = rule.ErrorMessage;
                    if (rule.ValidationParameters.Count > 0)
                    {
                        this.VTypeParams.AddRange(rule.ValidationParameters.Select(pair => new Parameter(pair.Key, JSON.Serialize(pair.Value), ParameterMode.Raw)));
                    }

                    return;
                }

                switch (rule.ValidationType)
                {
                case "remote":
                    this.IsRemoteValidation = true;
                    RemoteValidationDirectEvent evt = this.RemoteValidation;
                    evt.ErrorMessage = rule.ErrorMessage;

                    if (rule.ValidationParameters.ContainsKey("url"))
                    {
                        evt.Url = rule.ValidationParameters["url"].ToString();
                    }

                    if (rule.ValidationParameters.ContainsKey("type"))
                    {
                        evt.Method = (HttpMethod)Enum.Parse(typeof(HttpMethod), rule.ValidationParameters["type"].ToString(), true);
                    }

                    if (rule.ValidationParameters.ContainsKey("additionalfields"))
                    {
                        string fields = rule.ValidationParameters["additionalfields"].ToString();

                        foreach (string field in fields.Split(','))
                        {
                            string fieldName = field;

                            if (fieldName.StartsWith("*."))
                            {
                                fieldName = fieldName.Substring(2);
                            }

                            evt.ExtraParams.Add(new Parameter(fieldName, "function(){return Ext.net.findField(" + JSON.Serialize(fieldName) + ",this).getValue();}", ParameterMode.Raw));
                        }
                    }
                    break;
                }
            }
        }