Сделать 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);
- }
- }
- }
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 };
- }
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'а. Приятного вам программирования :)
Ссылки по теме