ASP.NET RSS Toolkit快速滿足你對於RSS的需求
- 2008-12-29
- 21832
- 0
還記得之前demo有介紹過怎麼把其他網站的RSS訂閱拉到自己的網站中,以及怎麼為自己的網站產生一個RSS檔過程繁瑣複雜,雖然在.NET3.5後有ServiceModel.Syndication可以快速處理RSS但還是麻煩阿...最近因為ASP.NET MVC的關係常晃Scott Guthrie's的Blog意外看到了這個好東西,非常簡單的讓你使用別人的RSS以及創建自己的RSS。
還記得我們之前是怎麼撈RSS資料到我們網站內嗎?【擷取RSS至您的網站中】【擷取RSS至您的網站中 PART II】【使用ServiceModel.Syndication 讀取RSS】這些方法是不是很繁雜阿,以下方法會讓你眼睛一亮
首先勒,我們要把抓下來的檔案中../AspNetRssToolkit-V2.0-Binaries\RssToolkit\bin\Debug下的dll檔案抓回我們的網站目錄Bin底下
Ajax的語言檔太多了看不到資料夾=.=
然後在工具列上按右鍵選擇選擇項目
按下瀏覽
選擇RssToolkit.dll→開啟→確定
就可以看到工具列多了兩個RssTools啦
先介紹RssDataSource是啥,我們把他當SqlSataSource拉到頁面上,點智慧標籤→設定資料來源→輸入你要的RSS(本範例輸入demo小舖的RSS位置)
再拉一個DataList到頁面選擇資料來源是RssDataSource1
完成圖類似這樣
啥都不要設定直接用瀏覽器看看
帥阿...這樣子就出來了,醜陋的原因只是我們沒調版面而已但是該從RSS撈的都有出來,太神啦
那又還記得我們當初製作一個RSS有多煩嗎?【產生 RSS feed】,沒錯ASP.NET RSS Toolkit的作法也是很簡單的啦
首先我們要建立一個泛型處理常式(以下為直接複製範例)我們新增了一個叫做RssHyperLinkFromRssFile.ashx的泛型處理常式內容就給他全貼上去再改吧
<%@ WebHandler Language="C#" Class="RssHyperLinkFromRssFile" %> using System; using System.Web; using System.Collections.Generic; using RssToolkit.Rss;//using這命名空間進來 public class RssHyperLinkFromRssFile : RssToolkit.Rss.RssDocumentHttpHandler//繼承此類別 { protected override void PopulateRss(string channelName, string userName) //其實以下可以直接複製過去看需要來修改 { Rss.Channel = new RssChannel(); Rss.Version = "2.0"; Rss.Channel.Title = "demo小舖RSS訂閱文章"; Rss.Channel.PubDate = "Tue, 10 Apr 2007 23:01:10 GMT"; Rss.Channel.LastBuildDate = "Tue, 10 Apr 2007 23:01:10 GMT"; Rss.Channel.WebMaster = "webmaster@email.com"; Rss.Channel.Description = "This is to test RssHyperLink From Rss File"; Rss.Channel.Link = "~/RssHyperLink.aspx"; Rss.Channel.Items = new List<RssItem>(); if (!string.IsNullOrEmpty(channelName)) { Rss.Channel.Title += " '" + channelName + "'"; } if (!string.IsNullOrEmpty(userName)) { Rss.Channel.Title += " (generated for " + userName + ")"; } RssItem item = new RssItem(); item.Title = "CodeGeneratedClass"; item.Description = "Consuming RSS feed programmatically using strongly typed classes"; item.Link = "~/CodeGeneratedClass.aspx"; Rss.Channel.Items.Add(item); item = new RssItem();//以下建立是因為範例沒有資料庫所以寫死,請自己跑迴圈.... item.Title = "ObjectDataSource"; item.Description = "Consuming RSS feed using ObjectDataSource"; item.Link = "~/ObjectDataSource.aspx"; Rss.Channel.Items.Add(item); item = new RssItem(); item.Title = "Opml"; item.Description = "Using OPML Files to aggregate and produce one feed"; item.Link = "~/Opml.aspx"; Rss.Channel.Items.Add(item); item = new RssItem(); item.Title = "RssDataSource"; item.Description = "Consuming RSS feed using RssDataSource"; item.Link = "~/RssDataSource.aspx"; Rss.Channel.Items.Add(item); item = new RssItem(); item.Title = "RssDocument"; item.Description = "Consuming RSS feed programmatically using RssDocument"; item.Link = "~/RssDocument.aspx"; Rss.Channel.Items.Add(item); } }
然後在頁面拉一個RssHyperLink進來設定連結位置
<cc1:RssHyperLink ID="RssHyperLink1" runat="server" IncludeUserName="False" NavigateUrl="~/RssHyperLinkFromRssFile.ashx" RenderStandardImage="False">Rss</cc1:RssHyperLink>
然後也是不修改,直接用瀏覽器看,你就會發現一個叫做RSS的連結,點下去竟然就是RSS Feed了...
官網上還有其他的用法有興趣的可以去參考參考,不過光是這兩樣就大幅的提高我們處理RSS的速度了,可以去作更多事囉,誰說拉一拉不好勒...
回應討論