gpt4 book ai didi

asp.net-mvc - 在MVC ASP.NET中使用/显示RSS提要的简便方法

转载 作者:行者123 更新时间:2023-12-04 03:14:17 24 4
gpt4 key购买 nike

我是MVC框架的新手,想知道如何将RSS数据从 Controller 传递到 View 。我知道有必要转换为某种IEnumerable列表。我已经看到了一些创建匿名类型的示例,但无法弄清楚如何将RSS feed转换为通用列表并将其传递给 View 。

我也不希望它被强类型输入,因为将有多个对各种RSS feed的调用。

有什么建议么。

最佳答案

我一直在尝试在MVC中制作WebPart的方法,这些方法基本上是包装在webPart容器中的UserControls。我测试的UserControls之一是Rss Feed控件。我使用Futures dll中的RenderAction HtmlHelper扩展来显示它,以便调用 Controller Action 。我使用SyndicationFeed类来完成大部分工作

using (XmlReader reader = XmlReader.Create(feed))
{
SyndicationFeed rssData = SyndicationFeed.Load(reader);

return View(rssData);
}

下面是 Controller 和UserControl代码:

Controller 代码为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Xml;
using System.ServiceModel.Syndication;
using System.Security;
using System.IO;

namespace MvcWidgets.Controllers
{
public class RssWidgetController : Controller
{
public ActionResult Index(string feed)
{
string errorString = "";

try
{
if (String.IsNullOrEmpty(feed))
{
throw new ArgumentNullException("feed");
}
**using (XmlReader reader = XmlReader.Create(feed))
{
SyndicationFeed rssData = SyndicationFeed.Load(reader);

return View(rssData);
}**
}
catch (ArgumentNullException)
{
errorString = "No url for Rss feed specified.";
}
catch (SecurityException)
{
errorString = "You do not have permission to access the specified Rss feed.";
}
catch (FileNotFoundException)
{
errorString = "The Rss feed was not found.";
}
catch (UriFormatException)
{
errorString = "The Rss feed specified was not a valid URI.";
}
catch (Exception)
{
errorString = "An error occured accessing the RSS feed.";
}

var errorResult = new ContentResult();
errorResult.Content = errorString;
return errorResult;

}
}
}

用户控件
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Index.ascx.cs" Inherits="MvcWidgets.Views.RssWidget.Index" %>
<div class="RssFeedTitle"><%= Html.Encode(ViewData.Model.Title.Text) %> &nbsp; <%= Html.Encode(ViewData.Model.LastUpdatedTime.ToString("MMM dd, yyyy hh:mm:ss") )%></div>

<div class='RssContent'>
<% foreach (var item in ViewData.Model.Items)
{
string url = item.Links[0].Uri.OriginalString;
%>
<p><a href='<%= url %>'><b> <%= item.Title.Text%></b></a>
<% if (item.Summary != null)
{%>
<br/> <%= item.Summary.Text %>
<% }
} %> </p>
</div>

修改后的代码以拥有类型化的模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ServiceModel.Syndication;

namespace MvcWidgets.Views.RssWidget
{
public partial class Index : System.Web.Mvc.ViewUserControl<SyndicationFeed>
{
}
}

关于asp.net-mvc - 在MVC ASP.NET中使用/显示RSS提要的简便方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/271045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com