/// <summary> /// 添加标签属性时的触发函数.用于设置自身的某些属性值 /// </summary> /// <param name="name"></param> /// <param name="item"></param> protected override void OnAddingAttribute(string name, Attribute item) { switch (name) { case "args": IExpression exp = item.Value; if (this.OwnerDocument.DocumentConfig.CompatibleMode) { if (!(exp is VariableExpression)) { exp = ParserHelper.CreateVariableExpression(this.OwnerTemplate, item.Text); } } this.ExpArgs.Add(exp); break; case "var": this.Variable = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text); break; case "output": this.Output = TypeConvert.ToBool(item.Text); break; } }
/// <summary> /// 添加标签属性时的触发函数.用于设置自身的某些属性值 /// </summary> /// <param name="name"></param> /// <param name="item"></param> protected override void OnAddingAttribute(string name, Attribute item) { switch (name) { case "index": this.Index = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text); break; } }
/// <summary> /// 添加标签属性时的触发函数.用于设置自身的某些属性值 /// </summary> /// <param name="name"></param> /// <param name="item"></param> protected override void OnAddingAttribute(string name, Attribute item) { switch (name) { case "var": this.Variable = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text); break; case "output": this.Output = TypeConvert.ToBool(item.Text); break; } }
/// <summary> /// 开始解析标签数据 /// </summary> /// <param name="ownerTemplate">宿主模板</param> /// <param name="container">标签的容器</param> /// <param name="tagStack">标签堆栈</param> /// <param name="text"></param> /// <param name="match"></param> /// <param name="isClosedTag">是否闭合标签</param> /// <returns>如果需要继续处理EndTag则返回true.否则请返回false</returns> internal override bool ProcessBeginTag(Template ownerTemplate, Tag container, Stack <Tag> tagStack, string text, ref Match match, bool isClosedTag) { if (this.Variable == null && !this.Output) { this.Variable = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, "c"); } //throw new ParserException(string.Format("{0}标签中如果未定义Output属性为true则必须定义var属性", this.TagName)); //if (this.Type != ServerDataType.Random // && this.Type != ServerDataType.Time // && this.Type != ServerDataType.Request // && this.Type != ServerDataType.Environment // && this.Item == null) throw new ParserException(string.Format("当{0}标签type=\"{1}\"时必须设置item属性值", this.TagName, this.Type)); return(base.ProcessBeginTag(ownerTemplate, container, tagStack, text, ref match, isClosedTag)); }
/// <summary> /// 添加标签属性时的触发函数.用于设置自身的某些属性值 /// </summary> /// <param name="name"></param> /// <param name="item"></param> protected override void OnAddingAttribute(string name, Attribute item) { switch (name) { case "from": VariableExpression ve = item.Value as VariableExpression; if (ve == null && this.OwnerDocument.DocumentConfig.CompatibleMode) { ve = ParserHelper.CreateVariableExpression(this.OwnerTemplate, item.Text); } this.From = ve; break; case "item": this.Item = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text); break; case "index": this.Index = ParserHelper.CreateVariableIdentity(this.OwnerTemplate, item.Text); break; } }