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);
        }
Esempio n. 2
0
        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);
        }