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; } } }