悬赏分:50 浏览:632 次
调用指定分类下的最新6篇文档
[Yu:DocList DocCount=6,CategoryId=89,Sort=DateTime,OrderBy=DESC,TitleLen=24,TitleAddStr=...]
[ItemTemplate]
<a href="[Yu:DocPath]" target="_blank">[Yu:Title]</a><br>
[/ItemTemplate]
[/Yu:DocList]
这是我在一个cms上看到一种标签调用形式,格式和Repeater差不多,请问怎么把上面的标签转成所需要格式(不是采用正则形式)
|
7个月前 wingoo : 写了个^_^, 仅仅是初步实现 还有很多要改进,比如开始的解析字串的部分,后来的取数据的部分... string html = "[Yu:DocList DocCount=6,CategoryId=89,Sort=DateTime,OrderBy=DESC,TitleLen=24][ItemTemplate]<a href=\"[Yu:DocPath]\" target=\"_blank\">[Yu:Title]</a><br>[/ItemTemplate][/Yu:DocList]"; int s = html.IndexOf("[Yu:DocList"); int t = html.IndexOf("]"); string str = html.Substring(s+11, t - s-11); string[] list = str.Trim().Split(",".ToCharArray()); ParaList paraList = new ParaList(); foreach (string s1 in list) { string[] li = s1.Split("=".ToCharArray()); if(li.Length==2) switch(li[0].Trim().ToLower()) { case "doccount": paraList.DocCount = Formatter.FormatterInt(li[1].Trim()); break; case "titlelen": paraList.TitleLen = Formatter.FormatterInt(li[1].Trim()); break; case "categoryid": paraList.CategoryID = Formatter.FormatterInt(li[1].Trim()); break; case "sort": paraList.Sort = li[1].Trim(); //需判断是否符合要求 break; case "orderby": paraList.OrderBy = li[1].Trim(); //需判断是否符合要求 break; } } IList<News> newss = News.GetNews(paraList.BuildSql()); if (newss.Count > 0) { s = html.IndexOf("[ItemTemplate]"); t = html.IndexOf("[/ItemTemplate]"); str = html.Substring(s, t |
|
7个月前 wingoo : 没显示完?-____- IList<News> newss = News.GetNews(paraList.BuildSql()); if (newss.Count > 0) { s = html.IndexOf("[ItemTemplate]"); t = html.IndexOf("[/ItemTemplate]"); str = html.Substring(s, t - s).TrimStart("[ItemTemplate]".ToCharArray()).TrimEnd("[/ItemTemplate]".ToCharArray()); string liNews = ""; StringBuilder sb = new StringBuilder(); foreach (News news in newss) { sb.Append(str.Replace("[Yu:Title]", news.Title)); } Response.Write(sb.ToString()); } } public class News { private string title; public string Title { get { return title; } set { title = value; } } public static IList<News> GetNews(string sql) { IList<News> newss = new List<News>(); News news = new News(); news.Title = "test1"; newss.Add(news); news = new News(); news.Title = "test2"; newss.Add(news); return newss; } } public class Formatter { public static int FormatterInt(string str) { int i = 0; int.TryParse(str, out i); return i; } } public class ParaList { private int docCount; public int DocCount { get { return docCount; } set { docCount = value; } } private int categoryID; public int CategoryID { |
|
7个月前 wingoo : private int categoryID; public int CategoryID { get { return categoryID; } set { categoryID = value; } } private string sort; public string Sort { get { return sort; } set { sort = value; } } private string orderBy; public string OrderBy { get { return orderBy; } set { orderBy = value; } } private int titleLen; public int TitleLen { get { return titleLen; } set { titleLen = value; } } public string BuildSql() { return ""; } } |