在asp.net中使用异步同步rss

有的时候我们需要在网页里读取论坛的信息,在传统ASP的时候我们使用的是JS或者是IFRAME,这两种方式都不是很方便,而且对搜索引擎不友好。现在有了.Net,我们有了另一种方式。

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

代码如下:
   1     task  class task class
 
82
 
83      // 一个自定义的控件,继承自另一个自定义控件。
  84      public   class  RArticle
 
85         : LPanel
 
86      {
 
87        propertiesproperties
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                successsuccess
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" />
为了简便起见,本程序就没有使用缓存之类的技术了,如有必要,请自行添加。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值