






















有的时候我们需要在网页里读取论坛的信息,在传统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/
本文首发
无垠论坛,请大家多指教。此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。