从Tumblr删除后,RSS删除的条目仍在asp.net阅读器中显示

时间:2018-05-06 13:16:04

标签: asp.net webforms rss rss-reader

我已经成功创建了一个ASP.NET RSS提要阅读器,我将其与Tumblr一起用于网站。它起作用,它抓住了最近的3个帖子。我有6个帖子要测试,我删除了3但我的读者没有显示原来的三个帖子。它会一直显示删除的最后3个。我已经将RSS放在Tumblr的浏览器中,它显示正确,但我的读者仍然显示已删除的三个帖子。我尝试清除缓存和更改浏览器,但我仍然在我的Feed中删除了已删除的帖子。这是我在下面使用的代码:

前端代码:

<asp:GridView ID="gvRssLI" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>

                <div>
                    <h3><%#Eval("Title") %></h3>
                </div>
                <div>
                    <%#Eval("PublishDate" , "{0:d}") %>
                </div>
                <div>&nbsp</div>

                <div align="right">
                    <a href='<%#Eval("Link") %>' target="_blank">Read More...</a>
                </div>

            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

代码隐藏代码:

private void PopulateRssFeed()
{
    string rssFeedUrl = ConfigurationManager.AppSettings["RssFeedUrl"];
    List<Feeds> feeds = new List<Feeds>();
    XDocument xDoc = XDocument.Load(rssFeedUrl);
    var items = (from x in xDoc.Descendants("item").Take(3)
                 select new
                 {
                     title = x.Element("title").Value,
                     link = x.Element("link").Value,
                     pubDate = x.Element("pubDate").Value,
                 });
    if (items != null)
    {
        feeds.AddRange(items.Select(i => new Feeds
        {
            Title = i.title,
            Link = i.link,
            PublishDate = i.pubDate,
        }));
    }

    gvRssLI.DataSource = feeds;
    gvRssLI.AutoGenerateColumns = false;
    gvRssLI.DataBind();
}

1 个答案:

答案 0 :(得分:1)

我测试了你的代码并且它有效。 Feed正确显示。看来Tumblr的缓存时间很长。但正如你所说,关于该主题的信息很少,唯一有用的提示就是这个网址。

https://twitter.com/fromedome/status/237250951889698816

但是你知道你可以制作强类型的GridView吗?您可以在GridView中使用ItemType,然后可以使用Item访问类属性。这有助于类型安全,因为Item已经是正确的数据类型。您必须将YourNameSpace.Feeds修改为正确的命名空间。

<asp:GridView ID="gvRssLI" runat="server" ItemType="YourNameSpace.Feeds">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>

                <div>
                    <h3><%# Item.Title %></h3>
                </div>
                <div>
                    <%# Item.PublishDate.ToLongDateString() %>
                </div>

            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

注意:您还可以使用专用库来阅读RSS源,例如https://github.com/codehollow/FeedReader