![]() |
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'à. Ïðèÿòíîãî âàì ïðîãðàììèðîâàíèÿ :) |