在Asp.Net中生成RSS MVC 3返回纯XML

时间:2013-01-04 11:48:37

标签: asp.net asp.net-mvc asp.net-mvc-3 rss

我遵循一个教程,其中作者从ActionResult继承,以创建将返回RSS的RssViewResult类。当我运行代码并转到返回RssViewResult的action方法时,将显示纯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);
    }

1 个答案:

答案 0 :(得分:2)

XML就是视图本身!

Firefox检测到XML并将其呈现为RSS阅读器。我肯定知道Chrome需要一个插件(但是在我上次检查时已经有6个月了)。

您可以通过添加

为RSS阅读器设置带有CSS的RSS样式
<?xml-stylesheet type= "text/css" href="rss.css"?>

<强>更新

此问题及其相关答案How to Add CSS Reference to .NET SyndicationFeed?提供了有关如何使用SyndicationFeed

添加css的良好参考