嘻哈人间,我醉逍遥

while(true){this.StudyDotNet(DotNetLanguage.CSharp);}

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
有的时候我们需要在网页里读取论坛的信息,在传统ASP的时候我们使用的是JS或者是IFRAME,这两种方式都不是很方便,而且对搜索引擎不友好。现在有了.Net,我们有了另一种方式。

要求:论坛需要提供RSS支持。

代码如下:

  1    task class
 82
 83    //一个自定义的控件,继承自另一个自定义控件。
 84    public class RArticle
 85        : LPanel
 86    {
 87        properties
104
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                success
171            }

172            else
173            {
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/

本文首发无垠论坛,请大家多指教。

posted on 2006-09-24 12:26  嘻哈呵嘿  阅读(2832)  评论(3编辑  收藏  举报
欢迎访问无垠IT教学网论坛