首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环通过类型SyndicationFeed输出RSS到视图?

如何循环通过类型SyndicationFeed输出RSS到视图?
EN

Stack Overflow用户
提问于 2012-08-14 13:54:41
回答 2查看 1.4K关注 0票数 0

我想以如下方式输出我的RSS提要:

代码语言:javascript
复制
@ModelType IEnumerable(Of MyBlog.RssModel)

<table>
    <tr>
        <th>
            Title
        </th>
        <th>
            Description
        </th>
        <th>
            Link
        </th>
        <th></th>
    </tr>

@For Each item In Model
    Dim currentItem = item
    @<tr>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.Title)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.Description)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) currentItem.Link)
        </td>
        <td>
        </td>
    </tr>
Next

</table>

这是我的代码:

代码语言:javascript
复制
Function ShowFeed() As ActionResult

    Dim feedUrl = "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
    Dim feed As SyndicationFeed = GetFeed(feedUrl)

    Dim model As IList(Of RssModel) = New List(Of RssModel)()

    For Each item As SyndicationItem In feed.Items
        Dim rss As New RssModel()
        rss.Title = item.Title.ToString
        rss.Description = item.Summary.ToString
        rss.Link = item.Links.ToString

        model.Add(rss)
    Next

    Return View(model)

End Function

产生意想不到的结果:

标题描述链接 System.ServiceModel.Syndication.TextSyndicationContent System.ServiceModel.Syndication.TextSyndicationContent System.ServiceModel.Syndication.NullNotAllowedCollection1[System.ServiceModel.Syndication.SyndicationLink] System.ServiceModel.Syndication.TextSyndicationContent System.ServiceModel.Syndication.TextSyndicationContent System.ServiceModel.Syndication.NullNotAllowedCollection1System.ServiceModel.Syndication.SyndicationLink System.ServiceModel.Syndication.TextSyndicationContent System.ServiceModel.Syndication.TextSyndicationContent System.ServiceModel.Syndication.NullNotAllowedCollection`1System.ServiceModel.Syndication.SyndicationLink

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-14 14:51:10

答案是:

代码语言:javascript
复制
Function ShowFeed() As ActionResult

        Dim feedUrl = "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
        Dim feed As SyndicationFeed = GetFeed(feedUrl)

        Dim model As IList(Of RssModel) = New List(Of RssModel)()

        For Each item As SyndicationItem In feed.Items
            Dim rss As New RssModel()
            rss.Title = item.Title.Text
            rss.Description = item.Summary.Text
            rss.Link = item.Links.First.Uri.ToString

            model.Add(rss)
        Next

        Return View(model)

    End Function
票数 0
EN

Stack Overflow用户

发布于 2012-08-14 13:58:28

您的Return View(viewModel)正在返回一个RssModel,而不是一个RssModels列表。您应该创建一个IEnumerable(of RssModel),并在每个循环中填充它,然后将IEnumerable返回到视图。

编辑:使用代码转换器从c#到vb,但这应该会显示您的进展。

代码语言:javascript
复制
Dim model As IList(Of RssModel) = New List(Of RssModel)()

For Each item As var In feed
    Dim rss As New RssModel()
    rss.Something = item.Something

    model.Add(rss)
Next

Return View(model.AsEnumerable(Of RssModel)())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11953847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档