,,asp.net的cms 核心代码篇

,,asp.net的cms 核心代码篇 第一篇:我简略描述了一下我的质心系统(质心系统的缩写)标签所表示的含义;anCMS(c#版)第一篇绑定数据;第二篇:我将展示了标签背后真正运行的代码,本文将介绍ASP。网的质心系统(质心系统的缩写)核心代码篇 第一篇,我简略描述了一下我的质心系统(质心系统的缩写)标签所表示的含义anCMS(c#版)第一篇绑定数据 第二篇,我将展示了标签背后真正运行的代码。asp.net的质心系统(质心系统的缩写)原理篇 好像开源有点多余,核心代码就下面这些。复制代码代码如下:使用系统;使用系统。收藏;使用系统。集合。泛型;使用系统100 . Linq使用系统。文本; 命名空间an.helper { ///summary ///查找超文本标记语言页面中可以转换成aspx页面的方法的正则表达式////摘要公共类HtmlToAspxMethod { private static T _ Validate TV=new T _ Validate();公共静态字符串ConvertMethodNameHtmlToAspx(字符串方法名){ string str=switch(方法名){ case ' list ':str=' TextFile ';打破;//文档case " list pager ":str=" textfile pager ";打破;//文档分页case“list”:str=“Article”;打破;//文章列表case " list pager ":str=" article pager ";打破;//文章分页case ' plist ':str=' Products ';打破;//产品列表案例“plist pager”:str=" product pager ";打破;//产品分页case " olist ":str=" One ";打破;//单页列表case“olist pager”:str=" one pager ";打破;//单页分页case " clist ":str=" Category ";打破;//分类列表case"clist pager":str="分类寻呼机";打破;//分类列表case " llist ":str=" Link ";打破;//连接列表case " llist pager ":str=" link pager ";打破;//连接分页case " ilist ":str=" Images ";打破;//图片集列表case " ilist pager ":str=" images pager ";打破;//图片集分页默认:break}返回str}公共静态字符串方法listname=' list | list pager | list | list pager | plist pager | olist | olist pager | clist | clist pager | llist | llist pager | ilist | ilist pager | ilist pager | ilist | ilist pager ';公共静态字符串方法filedname=' filed | num | category | keyword | sort | page | id ';///摘要///所有方法的入口,第一次运行时遍历该方法。摘要公共静态字符串AllMethodContentRegex='!- {an:(' MethodListName ').*?} - [\\s\\S]*?-{/an }-';公共静态列表字符串AllMethodContent(字符串内容){返回方法.RegexStr(AllMethodContentRegex,content);} ///摘要///获取所有的方法////汇总公共静态字符串AllMethodRegex='!-{安:('方法列表名')[^}]*}-';公共静态list string all方法(字符串内容){ return方法.RegexStr(AllMethodRegex,content);} ///摘要///获取方法的函数名称////汇总公共静态字符串MethodNameRegex='!-{ an:(' method listname ')';公共静态字符串方法名(字符串内容){ string str=var c=方法RegexStr(MethodNameRegex,content);if (c.Count0) { str=c[0].ToString();}返回字符串。替换('!-{安:',' ');} ///摘要///获取方法的字段和值////汇总公共静态字符串methodfiledregex='(' methodfiledname ')=\\[[^]]]';公共静态哈希表方法字段(字符串内容){哈希表ht=新哈希表();foreach(方法中的字符串RegexStr(MethodFiledRegex,content)){ string[]arr=s . Split('=');总远视Add(arr[0],arr[1]).替换('[',' ')。替换(']',' '));}返回ht;}公共静态字符串JsIncludeRegex=' script .*rel='share'[^]*/script';公共静态string[]js include(string html){ string js=' ';Liststring list_include=Method .RegexStr(JsIncludeRegex,html);foreach(string Inc in list _ include){ Liststring include list=Method .RegexStr(@'\w(?=\.js)’,Inc);if (includeList!=null){ js=include list[0]'();';html=html .替换(inc,’!-# include file=' Share/'包含列表[0]' .ascx '-');} }返回新字符串[] { js,html };} ///摘要///占位符////摘要公共静态字符串ValueOneRegex=@ ' \ $ { \ d }公共静态字符串ValueOne(字符串内容){ foreach(方法中的字符串s .RegexStr(ValueOneRegex,content)){ string num=s . Replace(' $ { ',' ').替换(' } ',' ');内容=内容Replace(s,' %=a[' num ']% ');}返回内容;} 公共静态字符串ValueOneToStringFormartRegex=@ ' \ $ { \ d \ | .*?}';公共静态字符串ValueOneToStringFormat(字符串内容){ foreach(方法中的字符串s .regex str(ValueOneToStringFormartRegex,content)){ string str=s . Replace(' $ { ',' ').替换(' } ',' ');string[] arr=str .拆分(' | ');string num=arr[0].ToString();string formart=arr[1].ToString();内容=内容Replace(s,' %=TimeFormart(a[' num '],' ' formart ' ')% ');}返回内容;} 公共静态字符串UrlRouteRegex=@'\$href\[\w \]\[.*?\]';公共静态字符串UrlRoute(字符串内容){ foreach(方法中的字符串s .RegexStr(UrlRouteRegex,content)) { //$href[index][{'aaa ',' bbb'},{'ccc ',' ddd'}] //%=UrlRoute(' '),new string[,]{{'aaa ',' bbb'},{'ccc ',' DDD ' });% string URL route=s . Replace(' $ href[',' %=UrlRoute(').替换('][','',新字符串[,]{ ')。替换(' #0 ',' a[0].ToString()').替换(' #1 ',' a[1].ToString()').替换(' #2 ',' a[2].ToString()').替换(' #3 ',' a[3].ToString()').替换(' #4 ',' a[4].ToString()').替换(' #5 ',' a[5].ToString()').替换(' #6 ',' a[6].ToString()').替换(' #7 ',' a[7].ToString()').替换(' #8 ',' a[8].ToString()').替换(' #9 ',' a[9].ToString()');urlRoute=urlRoute .子字符串(0,urlRoute .长度-1);URL route=URL route ' })% ';内容=内容. Replace(s,URL路由);}返回内容;}公共静态字符串分页regex=@ ' \ $ pager \[\ w \]\[.*?\]\[\ d \]';公共静态字符串分页(字符串内容){//$ pager[list][Category=$ Category $][15]//%=分页(' list ',new{Category=$category$},int showCounts,object totleCounts)% foreach(方法中的字符串s .RegexStr(PagingRegex,content)){ int numSite=s . LastIndexOf('[');string pager=s.Substring(0,numSite);string num=s.Substring(numSite).替换('[',' ')。替换(']',' '); 寻呼机=寻呼机。替换(' $pager[',' %=分页(')。替换('][','',新字符串[,]{ ');寻呼机=寻呼机。子字符串(0,分页. Length - 1) '},' num ',a[0])% ';内容=内容。替换(s,寻呼机);}返回内容;} 公共静态字符串LinkHrefRegex='(?=链接。*href=')[^']*';公共静态字符串ScriptSrcRegex='(?=脚本。*src=')[^']*';公共静态字符串ImgSrcRegex='img .*rel='share'[^]*/';公共静态字符串模板路径=' %=An _ DoMain %/Templates/'; 公共静态字符串HrefHtml(string html){ Liststring list _ link=Method .RegexStr(LinkHrefRegex,html);foreach(list _ link中的字符串链接Distinct()) { html=html .替换(链接,模板路径链接);} Liststring list_script=Method .RegexStr(ScriptSrcRegex,html);foreach(列表_脚本中的字符串脚本Distinct()) { html=html .替换(脚本,模板路径脚本);} Liststring list_img=方法RegexStr(ImgSrcRegex,html);foreach(list _ img中的字符串img .Distinct()) { html=html .替换(img,img .Replace('src=' ',' src=' '模板路径));}返回html} //公共静态字符串ForRegex='!- {for} - [\\s\\S]*?-{/for }-';//公共静态字符串For(string arr,string content)//{//foreach(string s in Method .RegexStr(ForRegex,content))//{//string str=" ";//str=' % if(1==1){ var arr=' arr ';foreach(数组中的变量s){ % ';//str=str s.Replace('!- {for} -',' ').替换('!- {/for} -',' ')' % } } % ';//内容=内容. Replace(s,str);//} //返回内容;//} 公共静态字符串FnSplitContentRegex=@ ' \ $ split \[.*?\]\[.*?\]';公共静态字符串FnSplitRegex=@ '!- {split} - [\s\S]*?-{/split }-';公共静态字符串FnSplit(字符串内容){ foreach(方法中的字符串s .RegexStr(FnSplitRegex,content)) { var list_split=Method .RegexStr(FnSplitContentRegex,content);字符串拆分方法=" ";if (list_split!=null){ split method=list _ split[0].ToString();} if (splitMethod!='') {字符串来源=' ',分隔符=' ';var list _ split _ value=拆分方法.拆分(']');if(列表拆分值.长度0) { source=list_split_value[0].替换(' $split[',' ');分隔符=列表拆分值[1].替换('[',' ');如果(来源!=' '){ string str=' ';如果(电视. is integer(source)==' '){ str=' % if(1==1){ var arr=a[' source '];foreach(数组中的变量.分裂('分隔符' '){ % ';} else { str=' % if(1==1){ var arr=' ' source " ";foreach(数组中的变量.分裂('分隔符' '){ % ';} str=s.Replace(splitMethod,' %=s% ').替换('!-{拆分} -',' ')。替换('!- {/split} -',' ');str=" % } } %内容=内容. Replace(s,str);} } } }返回内容;} ///摘要///将超文本标记语言方法转换成aspx的方法////summary///param name=' method name '/param///param name=' content '/param///returns/returns公共静态aspx filed HtmlFiledToAspxFiled(string method name,string content){ aspx filed af=new aspx filed();hashtable ht=方法字段(内容);foreach(ht中的字典条目h){ if(h . key。tostring()==' filed '){ af .归档=h值。tostring();} if(h . key。tostring()==' num '){ if(TV .是整数(h .值。tostring())==' '){ af .ShowCounts=Convert .toint 32(h .值。tostring());如果(af .ShowCounts 0) { af .ShowCounts=1;} else { af .ShowCounts=10} } if(h . key。tostring()==' sort '){ af .排序=h .值。tostring();} if(h . key。tostring()==' page '){ if(h . value。tostring()==' true '){ af .当前值=' An _ Current}否则{ af .current=" 1} } if (h.Key.ToString()=='类别){ af .CategoryID=h . value。tostring();} if (h.Key.ToString()=='关键字){ af .关键字=h .值。tostring();} if (h.Key.ToString()=='id') { af .ID=h .值。tostring();} }返回af;} 公共静态字符串AspxMethodDataSet(字符串方法名,字符串内容,字符串数据表名){ aspx filed af=HtmlFiledToAspxFiled(方法名,内容);string str=if (methodName .包含(' pager '){ if(method name==' clist pager '){ str=' my hashtable .add(' ' ' datatableName ' ',' ConvertMethodNameHtmlToAspx(方法名)'(' ' af .CategoryID ' ')));} else { str='MyHashtable .add(' ' ' datatableName ' ',' ConvertMethodNameHtmlToAspx(方法名)'(' ' af .ID ' ',' ' af .类别ID ' ',' ' af .关键字' '));';} } else { if(method name==' clist '){ str=' my hashtable .add(' ' ' datatableName ' ',' ConvertMethodNameHtmlToAspx(方法名)'(' ' af .已存档',' af .当前,' af .显示计数。排序',' af .CategoryID ' '));';} else { str='MyHashtable .add(' ' ' datatableName ' ',' ConvertMethodNameHtmlToAspx(方法名)'(' ' af .已存档',' af .当前,' af .显示计数。排序',' af .ID ' ',' ' af .类别ID ' ',' ' af .关键字' '));';} }返回字符串;} public static string AspxMethodDataRow(string datatableName,string content){ return ' % if(1==1){ var my rows=my rows(' datatableName ' ');如果(myRows!=null){ foreach(我的行中的var a){ % ' content ' % } } else { % p style=' margin:10px;'没有相关信息/p % } } % ';} 公共静态字符串服务器函数(字符串内容){ return ' script runat=' server ' protected override void OnLoad(EventArgs e){ ' content ' }/script ';}公共静态字符串ServerFunction(string content,string fnName){ return ' script runat=' server '公共void ' fnName '(){ ' content ' }/script ';} } 公共类AspxFiled { private string _ Filed公共字符串已存档{获取{ return _ Filed}设置{如果(值。包含('文本文件ID,')){ _ Filed=value } else { _ Filed=' text file .'身份证'值;} } } private string _ ID=公共字符串ID { get { return _ ID } set { _ ID=value } } private string _ CategoryID=公共字符串category id { get { return _ category id;} set { _ CategoryID=value } } private string _ Keyword=公共字符串关键字{ get { return _ Keyword } set { _ Keyword=value } } 私有字符串排序公共字符串排序{ get { return _ Sort } set { _ Sort=value } } private int _ show counts=0;public int show counts { get { return _ show counts;} set { _ ShowCounts=value} }私有字符串_当前=' 1公共字符串当前{ get { return _ Current } set { _ Current=value } } }///摘要///html和aspx的方法名称对应替换////摘要公共类ConvertHtmlToAspx { public string DataTableName(int num,string name) { return Method .Md5(日期时间现在。ToLongDateString()new Random().Next(1000) num new Random().下一个(1000)名);} public string ToAspx(string html,string ascxName){ html=AllToAspx(html);liststring list _ all方法content=HtmlToAspxMethod .AllMethodContent(html);字符串load=int I=0;foreach(list _ all方法内容中的字符串所有方法内容){ I;string all method=HtmlToAspxMethod .所有方法(所有方法内容)[0];//!-{ an:list }-string method name=HtmlToAspxMethod .方法名(所有方法);//方法名称!-{ an:list Hashtable method filed=HtmlToAspxMethod .方法字段(所有方法);//filed=[title]sort=[time desc]string content=所有方法内容.Replace(allMethod,' ').替换('!- {/an} -',' ');content=HtmlToAspxMethod .ValueOne(内容);content=HtmlToAspxMethod .ValueOneToStringFormat(内容);string dataTableName=dataTableName(I,ascxName);load=HtmlToAspxMethod .AspxMethodDataSet(methodName,allMethod,dataTableName);content=HtmlToAspxMethod .AspxMethodDataRow(dataTableName,content);html=html .Replace(allMethodContent,content);} if(ascxName==' '){ string[]js=HtmlToAspxMethod .js include(html);html=js[1];load=js[0];load=HtmlToAspxMethod .服务器功能(加载);} else { load=HtmlToAspxMethod .ServerFunction(load,ascxName);} html=HtmlToAspxMethod .HrefHtml(html);//链接转换返回加载html}私有字符串AllToAspx(string html){ html=html .Replace('$categoryname ',' %=An _ category name % ');//html=html .替换(' $title$ ',' %=An_Title% ').//页面标题//Replace('$keywords$ ',' %=An_KeyWords% ').//页面关键词//Replace('$description$ ',' %=An_Description% ').//页面描述//Replace('$domain$ ',' %=An_DoMain% ').//网站域名//Replace('$categoryname$ ',' %=An_CategoryName% ').//分类名称//Replace('$contact$ ',' ' An_Contact ' ').//联系我们//替换(' $id$ ',' An_ID ').//明细ID //Replace('$category$ ',' An_CategoryID ').//分类ID//替换(' $同济$ ',' %=安同济% ')。//Replace('$keyword$ ',' ' An _ KeyWord ' ');//搜索的关键词html=HtmlToAspxMethod .URL路由(html);html=HtmlToAspxMethod .分页(html);html=HtmlToAspxMethod .FnSplit(html); 返回html} } }呵呵,会不会太肤浅了。 主要就是通过上面这个代码,将超文本标记语言模版通过替换后变成aspx来运行。 我要去完善我的羧甲基淀粉钠啦。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: