Пример #1
0
        /// <summary>
        /// 获取某项标签项已定义的值
        /// </summary>
        public object GetDefinition(string x)
        {
            object objRet = null;
            bool gotValue = false;
            foreach (IResourceDependency res in ResTab.Values)
            {
                if (res.IsDefined(x))
                {
                    objRet = res.GetDefinition(x);
                    if (objRet != null && objRet.ToString() != "")
                    {
                        //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " " + x);
                        //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " " + objRet.ToString());
                        //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " " + res.ToString());
                        gotValue = true;
                        break;
                    }
                }
            }

            //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " 混合资源依赖: " + x);

            //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " 函数系统标签解析 ");
            if (!gotValue && x.StartsWith("{#$") && x.EndsWith(")$#}"))
            {
                using (TagParse tgp = new TagParse(x, RequestResDependency.Instance))
                {
                    objRet = tgp.GetValue();
                }
            }
            return objRet;
        }
Пример #2
0
        /// <summary>
        /// 设置输出形式
        /// </summary>
        public override string ToString()
        {
            IResourceDependency res = this.GetResourceDependency();
            if (res == null && TagDefinition.IndexOf("(") == -1 && TagDefinition.IndexOf('[') == -1 && TagDefinition.IndexOf('$') == -1)
            {
                object tagValue = base.GetTagValue();
                return (tagValue == null) ? "" : tagValue.ToString();
            }
            else
            {
                #region 如果资源有直接定义
                if (res != null)
                {
                    string resDefineKey = this.TagDefinition;
                    //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " " + res.ToString());
                    //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + " " + resDefineKey);
                    if (res.IsDefined(resDefineKey))
                    {
                        //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + resDefineKey + " " + res.ToString());
                        return res.GetDefinition(resDefineKey).ToString();
                    }
                }
                #endregion

                #region 草稿设计
                //()表示函数 []表示数组
                //{#$["首页","新闻","动态","联系"][2]$#}		= "动态"
                //{#$Now()$#} {#$Now('yyyy-MM-dd HH:mm:ss')$#}	= DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")

                //函数表达式数据绑定
                //-----------------------------------------------
                //{$Left(源文本,字段长)}
                //->
                //源文本 = {#FieldName},{%Year}
                //字段长 = 12

                //{${%Hour}==12 ? "正午": "其他时间"}
                //{$Contains({#FieldName},"虚数传播") ? "包含" : "不包含"}

                //数据操作符号
                //> < == != ?:
                #endregion

                //避免SVN/VSS关键字替换
                if (this.TagDefinition == "{#$" + "Date$#}")
                {
                    return DateTime.Now.Date.ToString("yyyy-M-d");
                }
                else if (this.TagDefinition == "{#$WK$#}")
                {
                    return DateTime.Now.DayOfWeek.GetHashCode().ToString();
                }
                else if (this.TagDefinition == "{#$Year$#}")
                {
                    return DateTime.Now.Year.ToString();
                }
                else if (this.TagDefinition == "{#$Month$#}")
                {
                    return DateTime.Now.Month.ToString();
                }
                else if (this.TagDefinition == "{#$Day$#}")
                {
                    return DateTime.Now.Day.ToString();
                }
                else if (this.TagDefinition == "{#$Hour$#}")
                {
                    return DateTime.Now.Hour.ToString();
                }
                else if (this.TagDefinition == "{#$Minute$#}")
                {
                    return DateTime.Now.Minute.ToString();
                }
                else if (this.TagDefinition == "{#$Second$#}")
                {
                    return DateTime.Now.Second.ToString();
                }
                else if (this.TagDefinition == "{#$MS$#}")
                {
                    return DateTime.Now.Millisecond.ToString();
                }
                else if (this.TagDefinition.StartsWith("{#$<") && this.TagDefinition.EndsWith(">$#}"))
                {
                    string urlMatchVal = this.TagDefinition.Substring(4, this.TagDefinition.Length - 8);
                    //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + urlMatchVal);
                    if (HttpContext.Current.Items["UrlMatchGroup"] == null)
                    {
                        //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + this.TagDefinition);
                        return string.Empty;
                    }
                    else
                    {
                        GroupCollection grpCol = (GroupCollection)HttpContext.Current.Items["UrlMatchGroup"];
                        if (Util.IsNumerical(urlMatchVal))
                        {
                            return grpCol[Convert.ToInt32(urlMatchVal)].Value;
                        }
                        else
                        {
                            return grpCol[urlMatchVal].Value;
                        }
                    }
                }
                else
                {
                    string objResult = this.TagDefinition;
                    try
                    {
                        //if (GetResourceDependency() != null)
                        //{
                        //    OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + GetResourceDependency().ToString());
                        //}
                        using (TagParse tgp = new TagParse(objResult, GetResourceDependency()))
                        {
                            objResult = tgp.GetValue();
                        }
                    }
                    catch (Exception exp)
                    {
                        //OleDbHelper.AppendToFile("~/debug.log", System.Environment.NewLine + this.TagDefinition + "\n" + res);

                        throw new InvalidOperationException(string.Format("系统标签解析错误,标签定义:{0}\n提示:{1} \n源跟踪:{2}",
                            objResult,
                            exp.Message,
                            exp.StackTrace));
                    }
                    return objResult;
                }
            }
        }