RSS â ASP.NET MVC

Èñòî÷íèê: progblog

 

Ñäåëàòü RSS feed â ASP.NET MVC äîñòàòî÷íî ïðîñòî. Äëÿ íà÷àëà ñîçäàäèì êëàññ RssActionResult, óíàñëåäîâàííûé îò ActionResult ñëåäóþùèì îáðàçîì:

 
  1. public class RssActionResult : ActionResult   
  2. {   
  3.     public SyndicationFeed Feed { get; set; }   
  4.   
  5.     public override void ExecuteResult(ControllerContext context)   
  6.     {   
  7.         context.HttpContext.Response.ContentType = "application/rss+xml";   
  8.   
  9.         Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(Feed);   
  10.         using (XmlWriter writer = XmlWriter.Create(context.HttpContext.Response.Output))   
  11.         {   
  12.             rssFormatter.WriteTo(writer);   
  13.         }   
  14.     }   
  15. }  
public class RssActionResult : ActionResult
{
    public SyndicationFeed Feed { get; set; }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.ContentType = "application/rss+xml";

        Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(Feed);
        using (XmlWriter writer = XmlWriter.Create(context.HttpContext.Response.Output))
        {
            rssFormatter.WriteTo(writer);
        }
    }
}

 RssActionResult ìû âîçâðàùàåì ñåðâåðíûé çàãîëîâîê content-type ñ òèïîì application/rss+xml. Äëÿ ôîðìàòèðîâàíèÿ rss ôèäîâ èñïîëüçóåòñÿ ñòàíäàðòíûé Rss20FeedFormatter êëàññ, ïîçâîëÿþùèé âîçâðàùàòü ñòðóêòóðèðîâàííûé xml ñòàíäàðòà RSS 2.0.

Òåïåðü ïðîñòî ñîçäà¸ì action, íàïðèìåð òàêîé:

  1. public ActionResult Feed()   
  2. {   
  3.     SyndicationFeed feed =   
  4.         new SyndicationFeed("ProgBlog RSS",   
  5.                             "ïîäïèñêà",   
  6.                             new Uri("http://www.progblog.ru/Feed"),   
  7.                             "TestFeedID",   
  8.                             DateTime.Now);   
  9.   
  10.     SyndicationItem item =   
  11.         new SyndicationItem("Ïåðâûé ïîñò",   
  12.                             "Ñîäåðæàíèå ïåðâîãî ïîñòà",   
  13.                             new Uri("http://www.progblog.ru/First-post"),   
  14.                             "TestItemID",   
  15.                             DateTime.Now);   
  16.   
  17.     List<SyndicationItem> items = new List<SyndicationItem>();   
  18.     items.Add(item);   
  19.     feed.Items = items;   
  20.   
  21.     return new RssActionResult() { Feed = feed };   
  22. }  
public ActionResult Feed()
{
    SyndicationFeed feed =
        new SyndicationFeed("ProgBlog RSS",
                            "ïîäïèñêà",
                            new Uri("http://www.progblog.ru/Feed"),
                            "TestFeedID",
                            DateTime.Now);

    SyndicationItem item =
        new SyndicationItem("Ïåðâûé ïîñò",
                            "Ñîäåðæàíèå ïåðâîãî ïîñòà",
                            new Uri("http://www.progblog.ru/First-post"),
                            "TestItemID",
                            DateTime.Now);

    List<SyndicationItem> items = new List<SyndicationItem>();
    items.Add(item);
    feed.Items = items;

    return new RssActionResult() { Feed = feed };
}

Âîò òàê ïðîñòî è êðàñèâî ñîçäà¸ì feed è îäèí ýëåìåíò ïîäïèñêè, à çàòåì âîçâðàùàåì â âèäå RssActionResult'à. Ïðèÿòíîãî âàì ïðîãðàììèðîâàíèÿ :)


Ñòðàíèöà ñàéòà http://185.71.96.61
Îðèãèíàë íàõîäèòñÿ ïî àäðåñó http://185.71.96.61/home.asp?artId=22769