![]() |
RSS â ASP.NET MVCÈñòî÷íèê: progblog
Ñäåëàòü RSS feed â ASP.NET MVC äîñòàòî÷íî ïðîñòî. Äëÿ íà÷àëà ñîçäàäèì êëàññ RssActionResult, óíàñëåäîâàííûé îò ActionResult ñëåäóþùèì îáðàçîì:
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, íàïðèìåð òàêîé:
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'à. Ïðèÿòíîãî âàì ïðîãðàììèðîâàíèÿ :) |