我已经让自己成为一个小用户控件来使用Feed,所谓的用户控件的代码就像这样
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SyndicationFeed >" %>
<%foreach (var rss in ViewData.Model.Items)
{
Response.Write("<div id={0}><a href={1} target=\"_blank\" /> <strong>{2}</strong></div>",
rss.Links[0].Uri.OriginalString, rss.Title.Text, rss.Title.Text);
Response.Write("<div>" + rss.Summary.Text.Truncate(100) + "</div>")
}%>
RssController的代码如下所示
public virtual ActionResult Index()
{
string feedUrl = @"http://wdfw.wa.gov/news/newsrss.php";
using (XmlReader reader = XmlReader.Create(feedUrl))
{
SyndicationFeed rss = SyndicationFeed.Load(reader);
return View(rss);
}
}
我在Site.Master中称之为
<%Html.RenderPartial("Index", Model);%>
我也试过
<%Html.RenderPartial("Index", ViewData.Model);%>
所有导致此错误:
具有相同ID的多个控件 'ctl00'被发现了。追踪需要 该控件具有唯一ID。
有人可以帮我弄清楚我出错的地方,请:)
答案 0 :(得分:0)
您可以尝试使用Html.RenderAction(“Index”,“Rss”)代替Html.RederPartial吗?当ViewEngine调用Html.RenderAction时,将执行Index操作中的所有代码,并将带有rss数据的Model转到Index视图以生成标记。为什么你使用Response.Write,在视图中你可以放置html标签,这个标记将被插入你调用Html.RenderAction的地方。希望它对你有所帮助,如果没有,对不起,至少我已经尝试了))
祝你好运, 迪马。