protected override bool OnServerSideEvaluate() { String ruleXml = GetControlValidationValue(ControlToValidate); if (String.IsNullOrEmpty(ruleXml)) { ErrorMessage = ValidationErrors.ServerRuleXMLIsMissing; return(false); } if (RuleTypeControl.Equals(ServerRuleTypeEnum.DataAccess.Lookup)) { // Validated DataAccess rules only have the condition. Make a fake // rule that includes a non-op action ruleXml = String.Format("<rule>{0}<action><no-op/></action></rule>", ruleXml); } var theDoc = new XmlDocument(); try { theDoc.LoadXml(ruleXml); } catch (Exception e) { ErrorMessage = String.Format(ValidationErrors.UnableToParseServerRuleXML, e.Message); return(false); } string error; if (false == Rule <ServerActionContext> .ValidateRule( theDoc, ServerRulesEngine.GetSpecificationCompiler(), ServerRulesEngine.GetActionCompiler(ServerRuleTypeEnum.GetEnum(RuleTypeControl)), out error)) { ErrorMessage = error; return(false); } return(true); }
public ValidationResult ValidateServerRule(string serverRule, string ruleType) { ValidationResult result = new ValidationResult(); if (String.IsNullOrEmpty(serverRule)) { result.ErrorText = ValidationErrors.ServerRuleXMLIsMissing; result.Success = false; result.ErrorCode = -5000; return(result); } ServerRuleTypeEnum type; try { type = ServerRuleTypeEnum.GetEnum(ruleType); } catch (Exception e) { result.ErrorText = String.Format(ValidationErrors.UnableToParseServerRuleXML, e.Message); result.Success = false; result.ErrorCode = -5000; return(result); } XmlDocument theDoc = new XmlDocument(); try { string xml = Microsoft.JScript.GlobalObject.unescape(serverRule); if (type.Equals(ServerRuleTypeEnum.DataAccess)) { // Validated DataAccess rules only have the condition. Make a fake // rule that includes a non-op action xml = String.Format("<rule>{0}<action><no-op/></action></rule>", xml); } theDoc.LoadXml(xml); } catch (Exception e) { result.ErrorText = String.Format(ValidationErrors.UnableToParseServerRuleXML, e.Message); result.Success = false; result.ErrorCode = -5000; return(result); } string error; if (false == Rule <ServerActionContext> .ValidateRule( theDoc, ServerRulesEngine.GetSpecificationCompiler(), ServerRulesEngine.GetActionCompiler(type), out error)) { result.ErrorText = error; result.Success = false; result.ErrorCode = -5000; } else { result.Success = true; } return(result); }