我已经成功创建了一个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> </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();
}
答案 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