Html.RenderPartial и несколько элементов управления с ошибкой с одинаковым идентификатором

Я сделал себе небольшой пользовательский элемент управления для потребления канала, код для указанного пользовательского элемента управления выглядит следующим образом

<%@ 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);%>

Все, что приводит к этой ошибке:

Обнаружено несколько элементов управления с одинаковым идентификатором ctl00. Трассировка требует, чтобы элементы управления имели уникальные идентификаторы.

Может кто-нибудь помочь мне понять, где я ошибаюсь, пожалуйста :)


person PsychoCoder    schedule 17.04.2011    source источник


Ответы (1)


Можете ли вы попробовать использовать Html.RenderAction("Index","Rss") вместо Html.RederPartial? Когда ViewEngine вызывает Html.RenderAction, выполняется весь код в вашем действии Index, а модель с данными rss переходит в представление Index для создания разметки. А зачем вы используете Response.Write, во view можно поставить html теги и эта разметка будет вставляться там, где вы вызываете Html.RenderAction. Надеюсь, это будет полезно для вас, если нет, извините, по крайней мере, я пытался ))

С уважением, Дима.

person Dima Shmidt    schedule 17.04.2011
comment
Я попробовал ваш вариант и получил это сообщение. Сообщение об ошибке компилятора: CS0121: вызов неоднозначен между следующими методами или свойствами: «Microsoft.Web.Mvc.ViewExtensions.RenderAction (System.Web.Mvc.HtmlHelper, строка, строка) ' и 'System.Web.Mvc.Html.ChildActionExtensions.RenderAction(System.Web.Mvc.HtmlHelper, строка, строка)' - person PsychoCoder; 17.04.2011
comment
@PsychoCoder, как я вижу из вашего комментария, это неправильно .. почему вы отметили это как ответ ?? - person RredCat; 06.12.2012