用ASP.NET MVC 發布 RSS(一)

用ASP.NET MVC 發布 RSS(一)

最近有個專案需要發布RSS的功能

但我對RSS非常的不熟,甚至沒有訂閱過任何的RSS

所以得先了解一下什麼是RSS  維基百科-RSS

簡單的說呢,RSS就是有特定格式的XML

經由網站管理者發布RSS,讓使用者利用RSS Reader訂閱此RSS

當RSS有更新的時候,RSS Reader就會通知使用者有新的內容可以看

 

知道原理之後,就來實作RSS看看

由於在MVC上,都是有Routing對應至Controller然後在對應到View上

所以可以在Controller內直接組出xml的格式寫出串流

或是在Controller中丟出Model,在View上用XML的格式寫出

 

今天先來試後者

參考文件在 http://blogs.msdn.com/brada/archive/2007/11/14/rss-feed-with-the-new-asp-net-mvc-framework.aspx

首先用Linq To Sql 拉出北風資料庫的Order Table

8576fcb96d384156b586d33a73a590a6

然後呢,在HomeController內加一個Action


public ActionResult Rss()
      {
          MyDataContext db = new MyDataContext();

          var model = db.Orders.OrderByDescending(p=>p.OrderDate).Take(50);

          return View(model);
      }

 

 

我先將Order Table內的資料按日期排序,然後抓出前50筆,再把資料傳回View上

在View內就直接用RSS  格式輸出

參考資料:

http://plog.longwin.com.tw/post/1/375    Tsung's Blog

RSS 2.0 at Harvard Law

RSS 参考手册


<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Test_Rss.Models.Order>>" %>


<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">

  <channel xmlns:cfi="http://www.microsoft.com/schemas/rss/core/2005/internal" cfi:lastdownloaderror="None">

    <title cf:type="text">ASP.NET MVC RSS</title>

    <link>http://xxxx.xxx</link>

    <description>測試用MVC 發布RSS</description>

    <dc:language>en-US</dc:language>

    <generator>MVC RSS</generator>

 <%  foreach (var item in  Model) { %>

 

    <item>

      <title><%=  item.ShipName %> </title>

      <link>http://www.yahoo.com.tw</link>

      <pubDate><%= item.OrderDate %> </pubDate>

      <author><%= item.Freight%> </author>

      <description><%= item.ShipAddress %></description>

    </item>

 <% } %>

 

  </channel>

</rss>

上面的內容有些因為沒有適合的欄位,所以我是亂抓的

這樣就完成了。

8a8617c4ba694a4483bd769ac22ff656

另外只要在Master Page的head中加入這條


<link rel="alternate" type="application/rss+xml" title="我的Rss" href="Rss網址路徑" />

瀏覽器就會偵測到這個網站有Rss囉

 

d55d838bb8a04c84a7c15c0dc98f1711