ASP.NET Core MVC で RSS を出力する(適当版)

執筆日時:

blog.daruyanagi.jp

前回は ASP.NET Web Pages のサイトを、付け焼き刃で ASP.NET Core MVC に移植しました。でも、WebMatrix で作ったフィード配信機能が動作しない……。

blog.daruyanagi.jp

blog.daruyanagi.jp

というわけで、こっちも簡易的な対策を行いました。

ちょっと調べた限りでは、

でイケそう。というわけで、まずはモデルっぽいもの(/Models/FeedItem.cs)を準備。

public class FeedItem
{
public string Link { get; set; }
public string Title { get; set; }
public HtmlString Content { get; set; }
public DateTime PublishDate { get; set; }
}

次にコントローラー(/Controllers/FeedController.cs)を作成。

public class FeedController : Controller
{
public async Task<IActionResult> Index()
{
var feeds = new List<FeedItem>();
// FeedItem を適当に Add() してね!
return View(feeds);
}
}

最後にビュー(/Views/Feed/Index.cshtml)を作成。今回は Atom で出力してみました。

@model IList<FeedItem>

@{ Context.Response.ContentType = "application/xml";

var title = "daruyanagi.jp"; var link = "https://blog.daruyanagi.jp/"; }

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja"> <title>@title</title> <link href="@link" /> <id>@link</id> @foreach (var item in Model) { <entry> <title>@item.Title</title> <link href="@item.Link" /> <id>@item.Link</id> <published>@item.PublishDate.ToString("yyyy-MM-dd’T’HH:mm:ss.fffK")</published> </entry> } </feed>

簡易的な対策ですけど、まぁ、ちゃんと動いているので当面はこれでよし。

f:id:daruyanagi:20170629030059p:plain

正しい作法ではない気がしますが(ちゃんとフレームワークでやり方が用意されているかも?)、自己流なりに要領をつかめてきた感じで嬉しいです。ほんとは ASP.NET Web Pages で気軽にやりたいんだけど……調べてみたらそろそろ準備が整いつつあるみたいなので楽しみ。