<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      模板引擎開發(fā)(二)-值標(biāo)簽的處理

      前面發(fā)了一篇,看到一些朋友評論,我說明一下。

      我這個模板引擎不是為了MVC使用的,而是純粹是為了供網(wǎng)頁制作人員使用,通過一些簡單的標(biāo)簽,能將網(wǎng)站后臺填寫的內(nèi)容在前臺展示出來,生成靜態(tài)化的網(wǎng)頁,類似于織夢CMS的思路。

      我之前也研究了一下NVelocity,它的確比我寫的強(qiáng)大,我當(dāng)初研究它只是研究它是以什么算法處理文檔的,為什么這么快,不過沒有研究出個明堂,呵呵。我這個處理引擎現(xiàn)在的執(zhí)行速度只能算一般般,全站靜態(tài)化生成的單線程處理需要二十幾秒。當(dāng)然也有數(shù)據(jù)庫的原因,我測試時使用的是Access數(shù)據(jù)庫。后續(xù)還要重構(gòu)和優(yōu)化代碼,想辦法提升執(zhí)行速度。

       

      本文主要描述值標(biāo)簽的處理。

      值標(biāo)簽分為“全局值標(biāo)簽”與“局部值標(biāo)簽”兩類,全局值標(biāo)簽顧名思義就是在整網(wǎng)站模板中,都起作用;局部值標(biāo)簽只在特定的頁面起作用。這兩類的標(biāo)簽樣式都是一樣的。

      例如:

      {%=orgSiteName%}企業(yè)網(wǎng)站的名稱,這是一個全局值標(biāo)簽

      {%=pdname%}當(dāng)前產(chǎn)品的名稱,這是一個局部值標(biāo)簽

      值標(biāo)簽可以帶格式化,例如:

      {%=pdPushTime:yyyy年M月d日%}當(dāng)前產(chǎn)品的發(fā)布時間,輸出格式為年月日

       

      值標(biāo)簽的處理很簡單,首先是檢索{%=%}字符。我用了正則表達(dá)式

      string patt = @"{%=\s*(\S[^\s%]+)\s*%}";

      Regex rex = new Regex(patt, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);

      MatchCollection mc = rex.Matches(context);

      上述代碼可以看出,值標(biāo)簽書寫時允許帶有空格、大小寫不敏感。

      變量mc即匹配出的對象。我們接著循環(huán)處理mc即可。如下:

                  for (int i = 0; i < mc.Count; i++)

                  {

                      Match ma = mc[i];

            //值標(biāo)簽{%=tag%}中的tag

                      string key = ma.Groups[1].Value.Trim();

                      //是否有格式符

                      bool isFormat = key.IndexOf(":") > -1;

                      string format = isFormat ? key.Substring(key.IndexOf(":") + 1) : "";

                      key = isFormat ? key.Substring(0, key.IndexOf(":")) : key;  

            if (!isFormat)……//如果沒有格式符

            if (isFormat) ……//如果有格式符          

                  }

      上述代碼中,我們?nèi)〉搅酥禈?biāo)簽中的具體標(biāo)簽與其格式符,當(dāng)然格式符可以為空(如{%=orgsitename%} 沒有格式符)。

      取到這兩個值后,可以格式化了

         /// <summary>
              /// 將變量格式化,格式化遵循C#格式規(guī)則
              /// </summary>
              /// <param name="obj"></param>
              /// <returns></returns>
              private static string _format(object obj,string format)
              {
                  string val = "";
                  if (obj is DateTime) val = ((DateTime)obj).ToString(format);
                  if (obj is int) val = ((int)obj).ToString(format);
                  if (obj is long) val = ((long)obj).ToString(format);
                  return val;
              }

       最后把處理后的實際值把標(biāo)簽替換掉就可以了。

       在值標(biāo)簽的處理過程中,主要是正則表達(dá)式。

      posted @ 2013-06-09 22:33  songsoft  閱讀(1585)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 人人人澡人人肉久久精品| 视频一区视频二区视频三| 国产在线拍揄自揄拍无码视频| 中文在线天堂中文在线天堂| 人妻少妇偷人无码视频| 国产精品一码二码三码| 亚洲人成网站18禁止无码| 国产成人无码免费网站| 亚洲综合一区二区精品导航| 亚洲欧洲∨国产一区二区三区| 成人免费A级毛片无码网站入口| 在线亚洲人成电影网站色www| 国产亚洲精品黑人粗大精选| 欧美性猛交xxxx黑人| 在线a亚洲v天堂网2018| 亚洲午夜成人精品电影在线观看 | 亚洲精品国产aⅴ成拍色拍| 欧美福利电影A在线播放| 日韩精品福利一区二区三区| 男女xx00xx的视频免费观看| 东京热人妻丝袜无码AV一二三区观| 精品国产一区二区色老头| 色老板精品无码免费视频| 亚洲情A成黄在线观看动漫尤物| 最近中文字幕完整版2019| 九九热在线视频观看这里只有精品 | 日韩丝袜欧美人妻制服| 影音先锋2020色资源网| 午夜福利国产区在线观看| 国产AV大陆精品一区二区三区| 国产69精品久久久久久| 国产suv精品一区二区| 日韩美女视频一区二区三区| 久久婷婷五月综合97色直播| 亚洲尤码不卡av麻豆| 国产自产对白一区| 偷窥盗摄国产在线视频| 亚洲男女羞羞无遮挡久久丫| 97色伦97色伦国产| 国产国语对白露脸正在播放| 永久免费在线观看蜜桃视频|