Html.RenderPartial&具有相同ID错误的多个控件

时间:2011-04-17 17:26:50

标签: asp.net-mvc-2 renderpartial

我已经让自己成为一个小用户控件来使用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。

有人可以帮我弄清楚我出错的地方,请:)

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Html.RenderAction(“Index”,“Rss”)代替Html.RederPartial吗?当ViewEngine调用Html.RenderAction时,将执行Index操作中的所有代码,并将带有rss数据的Model转到Index视图以生成标记。为什么你使用Response.Write,在视图中你可以放置html标签,这个标记将被插入你调用Html.RenderAction的地方。希望它对你有所帮助,如果没有,对不起,至少我已经尝试了))

祝你好运, 迪马。