demoshop

demo, trying to be the best_

官方網站
http://www.codeplex.com/ASPNETRSSToolkit

還記得之前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的速度了,可以去作更多事囉,誰說拉一拉不好勒...

回應討論