Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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, описывающий формат.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.