0

我正在关注作者从 ActionResult 继承以创建将返回 RSS 的 RssViewResult 类的教程。当我运行代码并转到返回 RssViewResult 的操作方法时,就会出现纯 XML 文件。我是 RSS 新手,在本教程中似乎没有创建任何特殊视图。
我需要创建一个视图还是我的代码出错了?
这是代码:

public class RssViewResult : ActionResult
{
    public RssViewResult(SyndicationFeed feed)
    {
        RssFeed = feed;
    }
    public SyndicationFeed RssFeed { get; set; }

    public override void ExecuteResult(ControllerContext context)
    {
        var resp = context.HttpContext.Response;
        resp.ContentType = "application/rss+xml";

        var rss = new Rss20FeedFormatter(RssFeed);
        using (var xml = XmlWriter.Create(resp.Output))
        {
            rss.WriteTo(xml);
        }
    }
}

这是返回 RSS 的操作方法:

    public RssViewResult RssFeed()
    {
        var feed = new SyndicationFeed("News", "Store news",
                                       new Uri(Request.Url.AbsoluteUri))
            {
                Items = _itemsRepository
                    .GetItems()
                    .Select(i =>
                            new SyndicationItem(
                                i.Product.Name,
                                i.Product.Description,
                                new Uri(Request.Url.AbsoluteUri)))
            };

        return new RssViewResult(feed);
    }
4

1 回答 1

2

XML 就是视图本身!

Firefox 检测 XML 并将其呈现为 RSS 阅读器。我确定 Chrome 需要一个插件(但这是我上次检查时的 6 个月前)。

您可以通过添加为 RSS 阅读器使用 CSS 样式化 RSS

<?xml-stylesheet type= "text/css" href="rss.css"?>

更新

This question and its related answer How to Add CSS Reference to .NET SyndicationFeed? gives a good reference about how to add css using SyndicationFeed

于 2013-01-04T12:39:18.357 回答