使用 System.ServiceModel.Synmination 进行 RSS 分页

问题描述 投票:0回答:1

我正在尝试使用

RSS-feed
对从
System.ServiceModel.Syndication
获得的帖子进行分页。但是我不知道如何做到这一点以及最好的方法是什么。

到目前为止,我使用

Listview
来呈现在我的代码隐藏中获取的数据:

// Link to the RSS-feed.
string rssUri = "feed.xml";
var doc = System.Xml.Linq.XDocument.Load(rssUri);

// Using LINQ to loop out all posts containing the information i want.
var rssFeed = from el in doc.Elements("rss").Elements("channel").Elements("item")

     select new
     {
          Title = el.Element("title").Value,
          PubDate = el.Element("pubDate").Value,

          Enclosure = el.Element("enclosure").Attribute("url").Value,
          Description = el.Element("description").Value
      };

// Binding the data to my listview, so I can present the data.
lvFeed.DataSource = rssFeed;
lvFeed.DataBind();

那么我该去哪里呢?我猜一种方法是在我的

DataPager
中使用
Listview
?但是我不确定如何使用该控件,我应该将所有数据发送到某个列表或类似
IEnumerable<>
的内容吗?

c# asp.net listview pagination rss
1个回答
1
投票

经过一番尝试和错误并阅读了

DataPager
后,我想出了以下解决方案,现在效果很好!

首先,我为我的对象创建了一个类,并使用它为我的

ListView
设置了一个选择方法,在页面加载时将数据绑定到它。这里的技巧是使用
ICollection
接口,并将数据发送到列表。这是该选择方法现在有效的代码,希望它可以帮助其他人解决同样的问题! :)

ICollection<Podcast> SampleData()
{
    string rssUri = "http://test.test.com/rss";
    var doc = System.Xml.Linq.XDocument.Load(rssUri);

    ICollection<Podcast> p = (from el in doc.Elements("rss").Elements("channel").Elements("item")

                         select new Podcast
                         {
                             Title = el.Element("title").Value,
                             PubDate = el.Element("pubDate").Value,
                             Enclosure = el.Element("enclosure").Attribute("url").Value,
                             Description = el.Element("description").Value
                              }).ToList();
        return p;
    }
© www.soinside.com 2019 - 2024. All rights reserved.