ASP.NET MVC - 實作讀取 RSS 功能

摘要:ASP.NET MVC - 實作讀取 RSS 功能

之前同事有做一個讀取 RSS 的功能,自己看了之後感覺滿炫的,所以今天突然有這樣的念頭,自己也來寫寫這個功能,當作一種練功好了。此次的實作,主要會用到 LINQ to XML,坦白說這也是我第一次寫這東西,好再找到了一個滿好的「參考資料」,用最簡單的方式將這個功能實作出來,以下就來說明實作的過程...

所用資料:http://www.dotblogs.com.tw/dc690216/Rss.aspx(小弟點部落的RSS清單)

步驟一:建立一個名為「RSS」的 Controller


步驟二:在「Models」中建立一個名為「RssClass」的類別


步驟三:建立相關欄位

Code:

public class RssClass
{
 public string Title { get; set; }
 public string PubDate { get; set; }
 public string Link { get; set; }
 public string Description { get; set; }
}

步驟四:在 RSSController 中撰寫讀取 RSS 的功能

Code:

using System.Xml.Linq;
using MVC_ReadRSS.Models;

namespace MVC_ReadRSS.Controllers
{
    public class RSSController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Index(string txtRSS)
        {
            if (!string.IsNullOrEmpty(txtRSS))
            {
                XDocument xDoc = XDocument.Load(txtRSS);

                IEnumerable<RssClass> rssList = from p in xDoc.Descendants("item")
                                                select new RssClass
                                                {
                                                    Title = p.Element("title").Value,
                                                    PubDate = Convert.ToDateTime(p.Element("pubDate").Value).ToString("yyyy-MM-dd HH:mm:ss"),
                                                    Link = p.Element("link").Value,
                                                    Description = p.Element("description").Value,
                                                };

                return View(rssList);
            }

            return JavaScript("alert('資料有誤!!')");
        }
    }
}

步驟五:設計畫面

Code:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <h2>RSS</h2>
   
    <%using (Html.BeginForm("Index", "RSS"))
      { %>
     
      RSS Url:<%=Html.TextBox("txtRSS",
                  "http://www.dotblogs.com.tw/dc690216/Rss.aspx",
                   new { style="width:300px" })%>
     
      <input type="submit" value="送出" />
   
    <%} %>
   
    <%if (Model != null)
      {%>
     
      <table>
        <tr>
            <th style="text-align:center">標題</th>
            <th style="text-align:center">摘要</th>
            <th style="text-align:center">發佈時間</th>
        </tr>
      <%
        foreach (var item in Model)
        {%>
        <tr>
            <td>
                <a href="<%=item.Link %>" target="_blank">
                    <%=item.Title %>
                </a>
            </td>
            <td><%=item.Description %></td>
            <td><%=item.PubDate %></td>
        </tr>
      <%} %>
      </table>
   
    <%} %>   

</asp:Content>

結果:


參考:
Using LINQ to XML (and how to build a custom RSS Feed Reader with it)