| 有的时候我们需要在网页里读取论坛的信息,在传统ASP的时候我们使用的是JS或者是IFRAME,这两种方式都不是很方便,而且对搜索引擎不友好。现在有了.Net,我们有了另一种方式。 要求:论坛需要提供RSS支持。 代码如下: 1
task class82 ![]() 83 //一个自定义的控件,继承自另一个自定义控件。84 public class RArticle85 : LPanel86 {87 properties104 ![]() 105 RssAsyncTask task;106 protected override void OnInit(EventArgs e)107 {108 base.OnInit(e);109 task = new RssAsyncTask(this.rssUrl);110 PageAsyncTask asyncTask = new PageAsyncTask(task.OnBegin, task.OnEnd, task.OnTimeout, null);111 ![]() 112 Page.RegisterAsyncTask(asyncTask);113 Page.ExecuteRegisteredAsyncTasks();114 }115 ![]() 116 static Random r = new Random();117 protected override void Render(System.Web.UI.HtmlTextWriter writer)118 {119 string rssContent = task.GetRssContent();120 XmlDocument doc = null;121 if (task.IsSuccess)122 {123 doc = new XmlDocument();124 doc.LoadXml(rssContent);125 ![]() 126 this.Title = doc.SelectSingleNode("rss/channel/title").InnerText;127 this.TitleNavigateUrl = doc.SelectSingleNode("rss/channel/link").InnerText;128 this.ShowTitle = true;129 }130 base.RenderBegin(writer);131 ![]() 132 writer.WriteBeginTag("div");133 writer.WriteAttribute("class", "child2");134 Right(writer);135 writer.WriteBeginTag("ul");136 Right(writer);137 ![]() 138 if (doc != null)139 {140 success171 }172 else173 {174 writer.WriteBeginTag("pre");175 Right(writer);176 writer.Write(task.GetRssContent());177 writer.WriteEndTag("pre");178 }179 ![]() 180 writer.WriteEndTag("ul");181 writer.WriteEndTag("div");182 ![]() 183 RenderChildren(writer);184 ![]() 185 base.RenderEnd(writer);186 }187 }188 ![]() 使用方法: 一、注册控件 CODE:
<%@ Register Assembly="Controls" Namespace="Limited.Controls" TagPrefix="lm" %>
二、调用CODE:
<lm:RArticle ID="RArticle1" runat="server" MaxRecordNumber="10" RssUrl="http://bbs.5inet.net/rss.aspx" />
为了简便起见,本程序就没有使用缓存之类的技术了,如有必要,请自行添加。原文首发:http://bbs.5inet.net/topic.aspx?topicid=181 具体效果请见本站首页: http://www.5inet.net/ 本文首发无垠论坛,请大家多指教。 |




}

浙公网安备 33010602011771号