4

コーディングに関しては本当にさびれており、答えを見つけるために一生懸命働いてきましたが、今は途方に暮れています.

私の Web サイトには、保存された RSS URL のデータベースがあります。私の人生では、すべての RSS フィード データをループして表示する方法がわかりません。

1 つのフィードを正常に表示することはできますが、すべてを表示すると、すべてを表示するために何をすればよいかわかりません。どんな助けでも大歓迎です!

モデル: RSS.cs

namespace MyWebsite.Models
{
    public class RSS
    {
        public string Link    { get; set; }
        public string Title         { get; set; }
        public string Description   { get; set; }
        public string PubDate       { get; set; }
        public string Date          { get; set; }
    }
}

モデル: RSSReader.cs

namespace MyWebsite.Models
{
    public class RSSReader
    {
        private static string _URL = "";

        public static IEnumerable<RSS> GetRSSFeed()
        {
            IEnumerable<RSS> feeds = null;
            XDocument feedXml = null;
            XNamespace rss = "http://purl.org/rss/1.0/";
            XNamespace dc = "http://purl.org/dc/elements/1.1/";
            int count = 0;

            foreach (var url in BansheeData.GetURL(count))
            {
                _URL = url.url1;
                feedXml = XDocument.Load(_URL);

                    feeds = from feed in feedXml.Descendants(rss + "item")
                            select new RSS
                            {
                                Title = feed.Element(rss + "title").Value,
                                Link = feed.Element(rss + "link").Value,
                                Date = feed.Element(dc + "date").Value.Remove(10)
                            };

                count++;
            }

            return feeds;
        }
    }
}

コントローラー: RSSController.cs

public ActionResult Index()
{
      var urlFeed = MyWebsite.Models.RSSReader.GetRSSFeed();
      return View(urlFeed);
}

ビュー: _RSSFeed.cshtml

@model IEnumerable<MyWebsite.Models.RSS>

@foreach (var item in Model) { 
    <section>
        <header class="overflow">
            <h1>
                <a href="@item.Link" target="_blank" class="alt overflow">
                    <span class="fl">@Html.Raw(item.Title)</span>
                    <span class="ref fr">Source, @Html.Encode(item.Date)</span>
                </a>
            </h1>
        </header>
    </section>
}
4

1 に答える 1

2

あなたのコードに問題があると思います。反復ごとにリストに項目を追加できません。

したがって、代わりに:

            foreach (var url in BansheeData.GetURL(count))
            {
                _URL = url.url1;
                feedXml = XDocument.Load(_URL);

                feeds = from feed in feedXml.Descendants(rss + "item")
                            select new RSS
                            {
                                Title = feed.Element(rss + "title").Value,
                                Link = feed.Element(rss + "link").Value,
                                Date = feed.Element(dc + "date").Value.Remove(10)
                            };

                count++;
            }

            return feeds;

AddRange反復ごとにリストにdoを試みます:

        var rssList = new List<RSS>;

        foreach (var url in BansheeData.GetURL(count))
        {
            _URL = url.url1;
            feedXml = XDocument.Load(_URL);

            feeds = from feed in feedXml.Descendants(rss + "item")
                        select new RSS
                        {
                            Title = feed.Element(rss + "title").Value,
                            Link = feed.Element(rss + "link").Value,
                            Date = feed.Element(dc + "date").Value.Remove(10)
                        };

            rssList.AddRange(feeds);

            count++;
        }

        return rssList;

これは役立つはずです。これで、RSS の全リストが表示されます。コアロジックは、反復して、各反復サイクルで必要なアイテムを取得するときです。それらを覚えておく必要があります。つまり、それらを一時リストに保存します。

于 2013-03-08T09:08:56.837 に答える