c# AJAX實(shí)踐VS2005 + RSSToolKit 開(kāi)發(fā)你自己的RSS在線閱讀器
在之前我們?nèi)绻獙?shí)現(xiàn)博客的RSS訂閱,通常都需要手寫(xiě)代碼去生產(chǎn)或讀取XML?,F(xiàn)在有了RSSToolKit,這一切就變得簡(jiǎn)單了。你可以使用他在五分鐘內(nèi)實(shí)現(xiàn)自己的 Rss 在線閱讀器。這篇文章將介紹如何讀取站點(diǎn) Rss 信息。
開(kāi)發(fā)環(huán)境:VS2005 + RSSToolKit
一、首先我們需要建立一個(gè)ASP.NET AJAX站點(diǎn)
二、引入RssToolKit到項(xiàng)目中,建好的項(xiàng)目如下(CSS和圖片文件可以使用我壓縮文檔里的)
三、可以開(kāi)始寫(xiě)代碼了
1.首先需要一個(gè)ScriptManager、一個(gè)UpdatePanel、一個(gè)UpdateProgress。哈哈,都是廢話AJAX頁(yè)面程序大概都需要這些。其他的就是你的要求了。具體的頁(yè)面代碼如下:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3 <%@ Register Assembly="RssToolkit" Namespace="RssToolkit" TagPrefix="Rss" %>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>向東博客閱讀器|meil.livebaby.cn</title>
8 <link href="CSS/Layout.css" rel="stylesheet" type="text/css" />
9
10 <script language="JavaScript" type="text/javascript">
11 var ls;
12 function ls_onClk(itemNumber) {
13
14 if(ls == null) ls = $get("List0");
15
16 ls.className = "";
17 ls = $get("list" + itemNumber);
18 ls.className = "current";
19 return true;
20 }
21 </script>
22
23 </head>
24 <body>
25 <form id="form1" runat="server">
26 <asp:ScriptManager ID="ScriptManager1" runat="server" />
27 <div id="content-header">
28 <h1><asp:HyperLink ID="HyperLink1" runat="server" Text="向東" Target="_blank" NavigateUrl="http://meil.livebaby.cn/index.html"></asp:HyperLink>
29 博客閱讀器</h1>
30 </div>
31 <div id="content-container">
32 <div id="content-side1">
33 <ul class="list-of-links">
34 <li id="list0" class="current">
35 <asp:LinkButton ID="lb0" runat="server" CommandArgument="0" OnClientClick="ls_onClk(0);" OnCommand="lnk_cmd">向東博客</asp:LinkButton></li>
36 <li id="list1">
37 <asp:LinkButton ID="lb1" runat="server" CommandArgument="1" OnClientClick="ls_onClk(1);" OnCommand="lnk_cmd">財(cái)經(jīng)博客</asp:LinkButton></li>
38 <li id="list2">
39 <asp:LinkButton ID="lb2" runat="server" CommandArgument="2" OnClientClick="ls_onClk(2);" OnCommand="lnk_cmd">Flower博客</asp:LinkButton></li>
40 <li id="list3">
41 <asp:LinkButton ID="lb3" runat="server" CommandArgument="3" OnClientClick="ls_onClk(3);" OnCommand="lnk_cmd">活力寶貝博客網(wǎng)</asp:LinkButton></li>
42 <li id="list4">
43 <asp:LinkButton ID="lb4" runat="server" CommandArgument="4" OnClientClick="ls_onClk(4);" OnCommand="lnk_cmd">悠悠寶貝的博客</asp:LinkButton></li>
44 <li id="list5">
45 <asp:LinkButton ID="lb5" runat="server" CommandArgument="5" OnClientClick="ls_onClk(5);" OnCommand="lnk_cmd"><font color="red">向東博客園博客</font></asp:LinkButton></li>
46 <li id="li6">
47 <asp:LinkButton ID="lb6" runat="server" CommandArgument="6" OnClientClick="ls_onClk(6);" OnCommand="lnk_cmd"><font color="red">博客園</font></asp:LinkButton></li>
48 </ul>
49 </div>
50 <div id="content-main">
51 <asp:UpdatePanel ID="updateMain" runat="server" UpdateMode="conditional" >
52 <Triggers>
53 <asp:AsyncPostBackTrigger ControlID="lb0" />
54 <asp:AsyncPostBackTrigger ControlID="lb1" />
55 <asp:AsyncPostBackTrigger ControlID="lb2" />
56 <asp:AsyncPostBackTrigger ControlID="lb3" />
57 <asp:AsyncPostBackTrigger ControlID="lb4" />
58 <asp:AsyncPostBackTrigger ControlID="lb5" />
59 <asp:AsyncPostBackTrigger ControlID="lb6" />
60 </Triggers>
61 <ContentTemplate>
62 <h2><asp:Label ID="lblHeader" runat="server">最新日志</asp:Label></h2>
63 <hr />
64 <asp:Panel ID="pnlBlog" runat="server">
65 <Rss:RssDataSource ID="rssDS" runat="server" MaxItems="0" Url=""></Rss:RssDataSource>
66 <asp:DataList ID="lsBlog" runat="server" DataSourceID="rssDS">
67 <ItemTemplate>
68 <asp:Panel ID="panelHeader" runat="server" Style="cursor: pointer; color: #d61719;width: 100%; display: block;">
69 <span style="float: left;"><%# Eval("title") %></span>
70 <asp:Image ID="Image1" runat="server" Style="float: right;" ImageUrl="~/images/expand_blue.jpg" />
71 </asp:Panel>
72 <asp:Panel ID="Panel1" runat="server" Style="margin-top: 3px;width: 100%; background: transparent url(images/blogBack.gif) no-repeat text-top left;">
73 <%# Eval("description") %>
74 (<asp:HyperLink ID="hlMore" runat="server" NavigateUrl='<%# Eval("link") %>' Target="_blank" Text="更多內(nèi)容"></asp:HyperLink>)
75 </asp:Panel>
76 <ajaxT:CollapsiblePanelExtender ID="cpe1" runat="server" TargetControlID="Panel1"
77 ExpandControlID="panelHeader" CollapseControlID="panelHeader" SuppressPostBack="true"
78 ImageControlID="Image1" Collapsed="true" ExpandedImage="~/images/collapse_blue.jpg"
79 CollapsedImage="~/images/expand_blue.jpg" />
80 <hr style="border-bottom: 1px dotted #B2B2B2; margin: 0px;" />
81 </ItemTemplate>
82 </asp:DataList>
83 </asp:Panel>
84 </ContentTemplate>
85 </asp:UpdatePanel>
86 </div>
87 </div>
88 <asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="true">
89 <ProgressTemplate>
90 <div id="updProgress">
91 <img alt="" src="images/indicator.gif" />
92 <span>數(shù)據(jù)獲取中</span>
93 </div>
94 </ProgressTemplate>
95 </asp:UpdateProgress>
96 </form>
97 <center><div><a >meil.livebaby.cn</a> 程序制作:向東 2007.7</center>
98 </body>
99 </html>
100
比較重要的是這兩部分:
行66:<Rss:RssDataSource ID="rssDS" runat="server" MaxItems="0" Url=""></Rss:RssDataSource>
這就是實(shí)現(xiàn)RSS讀取的核心了,有了這個(gè)標(biāo)記就實(shí)現(xiàn)了RSS讀取的一半工作,那剩下的吶?
看看下面者部分,lnk_cmd 命令實(shí)現(xiàn)了RSS數(shù)據(jù)的重綁定,這樣你就可以實(shí)時(shí)的訪問(wèn)多個(gè)RSS地址了。如果你覺(jué)得這樣還不夠靈活,可以加個(gè)Textbox,然后用程序去綁定,這樣也不錯(cuò)。不過(guò),此次就不實(shí)現(xiàn)這個(gè)了,有興趣的朋友可以試試,應(yīng)該不難。哈哈!
行35:<asp:LinkButton ID="lb0" runat="server" CommandArgument="0" OnClientClick="ls_onClk(0);"
OnCommand="lnk_cmd">向東博客</asp:LinkButton></li>
1 protected void lnk_cmd(object sender, CommandEventArgs e)
2 {
3 int command = Convert.ToInt32(e.CommandArgument);
4
5 rssDataBind(command);
6 }
rssDataBind就是綁定的函數(shù),代碼是:
1 protected void rssDataBind(int cmd)
2 {
3 switch (cmd)
4 {
5 case 0:
6 rssDS.Url = "http://www.livebaby.cn/blog/u/meil/rss2.xml";
7 lsBlog.DataBind();
8 lblHeader.Text = "向東博客";
9 break;
10 case 1:
11 rssDS.Url = "http://www.livebaby.cn/blog/u/money/rss2.xml";
12 lsBlog.DataBind();
13 lblHeader.Text = "財(cái)經(jīng)博客";
14 break;
15 case 2:
16 rssDS.Url = "http://www.livebaby.cn/blog/u/flower/rss2.xml";
17 lsBlog.DataBind();
18 lblHeader.Text = "Flower博客";
19 break;
20 case 3:
21 rssDS.Url = "http://www.livebaby.cn/blog/rss2.asp";
22 lsBlog.DataBind();
23 lblHeader.Text = "活力寶貝博客網(wǎng)";
24 break;
25 case 4:
26 rssDS.Url = "http://www.livebaby.cn/blog/u/yoyo/rss2.xml";
27 lsBlog.DataBind();
28 lblHeader.Text = "悠悠寶貝的博客";
29 break;
30 case 5:
31 rssDS.Url = "http://www.cnblogs.com/meil/rss";
32 lsBlog.DataBind();
33 lblHeader.Text = "向東博客園博客";
34 break;
35 case 6:
36 rssDS.Url = "http://www.cnblogs.com/rss";
37 lsBlog.DataBind();
38 lblHeader.Text = "博客園";
39 break;
40 default:
41 break;
42 }
43 }
rssDS.Url = "http://www.livebaby.cn/blog/u/meil/rss2.xml";
lsBlog.DataBind();
是不是就如DB數(shù)據(jù)的綁定。MS的東西雖然結(jié)構(gòu)性不好,但是上手真的好快。
到底需要多少個(gè)Case就看你的需要了。我這里就綁定了六個(gè)RSS地址,你還可以更多,但要注意的是一定要和頁(yè)面上的LinkButton數(shù)對(duì)應(yīng)上。
最終的C#代碼如下:
1 protected void rssDataBind(int cmd)
2 {
3 switch (cmd)
4 {
5 case 0:
6 rssDS.Url = "http://www.livebaby.cn/blog/u/meil/rss2.xml";
7 lsBlog.DataBind();
8 lblHeader.Text = "向東博客";
9 break;
10 case 1:
11 rssDS.Url = "http://www.livebaby.cn/blog/u/money/rss2.xml";
12 lsBlog.DataBind();
13 lblHeader.Text = "財(cái)經(jīng)博客";
14 break;
15 case 2:
16 rssDS.Url = "http://www.livebaby.cn/blog/u/flower/rss2.xml";
17 lsBlog.DataBind();
18 lblHeader.Text = "Flower博客";
19 break;
20 case 3:
21 rssDS.Url = "http://www.livebaby.cn/blog/rss2.asp";
22 lsBlog.DataBind();
23 lblHeader.Text = "活力寶貝博客網(wǎng)";
24 break;
25 case 4:
26 rssDS.Url = "http://www.livebaby.cn/blog/u/yoyo/rss2.xml";
27 lsBlog.DataBind();
28 lblHeader.Text = "悠悠寶貝的博客";
29 break;
30 case 5:
31 rssDS.Url = "http://www.cnblogs.com/meil/rss";
32 lsBlog.DataBind();
33 lblHeader.Text = "向東博客園博客";
34 break;
35 case 6:
36 rssDS.Url = "http://www.cnblogs.com/rss";
37 lsBlog.DataBind();
38 lblHeader.Text = "博客園";
39 break;
40 default:
41 break;
42 }
43 }
源碼下載地址:http://www.cnblogs.com/Files/meil/ReaderRss_src.rar
本文永久地址: http://www.livebaby.cn/blog/u/meil/archives/2007/1169.html
相關(guān)文章
C#采用FileSystemWatcher實(shí)現(xiàn)監(jiān)視磁盤(pán)文件變更的方法
這篇文章主要介紹了C#采用FileSystemWatcher實(shí)現(xiàn)監(jiān)視磁盤(pán)文件變更的方法,詳細(xì)分析了FileSystemWatcher的用法,并以此為基礎(chǔ)實(shí)現(xiàn)監(jiān)視磁盤(pán)文件變更,是非常實(shí)用的技巧,具有一定的借鑒價(jià)值,需要的朋友可以參考下2014-11-11WPF實(shí)現(xiàn)Interaction框架的Behavior擴(kuò)展
這篇文章介紹了WPF實(shí)現(xiàn)Interaction框架Behavior擴(kuò)展的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06在winform下實(shí)現(xiàn)左右布局多窗口界面的方法
在web頁(yè)面上我們可以通過(guò)frameset,iframe嵌套框架很容易實(shí)現(xiàn)各種導(dǎo)航+內(nèi)容的布局界面,而在winform、WPF中實(shí)現(xiàn)其實(shí)也很容易,通過(guò)本文給大家介紹在winform下實(shí)現(xiàn)左右布局多窗口界面的方法,本文介紹的非常詳細(xì),對(duì)winform布局相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-02-02C#導(dǎo)出數(shù)據(jù)到CSV文件的通用類(lèi)實(shí)例
這篇文章主要介紹了C#導(dǎo)出數(shù)據(jù)到CSV文件的通用類(lèi),將C#操作CSV文件的常用技巧封裝進(jìn)一個(gè)通用類(lèi)中以方便調(diào)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04C#使用百度Ueditor富文本框?qū)崿F(xiàn)上傳文件
這篇文章主要為大家詳細(xì)介紹了C#如何使用百度Ueditor富文本框?qū)崿F(xiàn)上傳文件(圖片,視頻等),文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-07-07C#入門(mén)之窗體的簡(jiǎn)單用法實(shí)例
這篇文章主要介紹了C#入門(mén)之窗體的簡(jiǎn)單用法,以實(shí)例形式分析了注冊(cè)頁(yè)面程序的實(shí)現(xiàn)過(guò)程,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12C#比較二個(gè)數(shù)組并找出相同或不同元素的方法
這篇文章主要介紹了C#比較二個(gè)數(shù)組并找出相同或不同元素的方法,涉及C#針對(duì)數(shù)組的交集、補(bǔ)集等集合操作相關(guān)技巧,非常簡(jiǎn)單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11C# 文件操作函數(shù) 創(chuàng)建文件 判斷存在
本文列舉了C#中文件操作中常用的函數(shù),創(chuàng)建文件和判斷文件存不存在的基本使用,簡(jiǎn)單實(shí)用,希望能幫到大家。2016-05-05C#使用Monitor類(lèi)實(shí)現(xiàn)線程同步
這篇文章介紹了C#使用Monitor類(lèi)實(shí)現(xiàn)線程同步的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04