![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
RssActionResult
RSS – это XML формат, предназначенный для описания лент новостей, статей, блогов. У нас пока нет постов, так что мы просто создадим RssActionResult. В System.ServiceModel.Syndication – это набор инструментов для работы с RSS. Нам необходимы SyndicationFeed и SyndicationItem. Подключим System.ServiceModel в reference, создадим новый контроллер (/Areas/Default/Controllers/FeedController.cs): public class FeedController: DefaultController { public ActionResult Index() { var host = Request.Url; var feed = new SyndicationFeed(" Site RSS", " ", new Uri(host.AbsoluteUri + " /Feed"));
var items = new List< SyndicationItem> ();
var item = new SyndicationItem( " Title", " content", new Uri(" https://" + host + " /some-link-url"), " Title", DateTime.Now ); items.Add(item); feed.Items = items;
return View(); }
} Абсолютно тестовые данные, одно значение на нерабочую ссылку. Создадим RssActionResult (/Global/RssActionResult.cs): public class RssActionResult: ActionResult { public SyndicationFeed Feed { get; set; }
public override void ExecuteResult(ControllerContext context) { context.HttpContext.Response.ContentType = " application/rss+xml";
var rssFormatter = new Rss20FeedFormatter(Feed); using (var writer = XmlWriter.Create(context.HttpContext.Response.Output)) { rssFormatter.WriteTo(writer); } } } Основным параметром является Feed, куда передается уже сформированный Feed. Сам ActionResult вызывает ExecuteResult(). Мы используем Rss20FeedFormatted для записи xml в Response.Output. Response.Output – это stream, куда записывая данные обрабатываются браузером как ответ. Для того чтобы браузер понимал, какой именно тип данных мы передаем, мы присваиваем в Response.ContentType = “application/rss+xml”. Возвращаем наш RssActionResult (/Areas/Default/Controllers/FeedController.cs): … return new RssActionResult {Feed = feed }; Запускаем: Если установить RSS Subscription Extension (by Google), то наш RSS-канал отобразится в браузере, и мы сможем на него подписаться.: Можете попробовать реализовать Sitemap вывод. Вот протокол https://www.sitemaps.org/protocol.html, описывающий формат.
|