用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
然後呢,在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 参考手册
<%@ 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>
上面的內容有些因為沒有適合的欄位,所以我是亂抓的
這樣就完成了。
另外只要在Master Page的head中加入這條
<link rel="alternate" type="application/rss+xml" title="我的Rss" href="Rss網址路徑" />
瀏覽器就會偵測到這個網站有Rss囉