Html.RenderPartial & Несколько элементов управления с одинаковой ошибкой идентификатора - PullRequest
1 голос
/ 17 апреля 2011

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

<%@ 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».Трассировка требует, чтобы элементы управления имели уникальные идентификаторы.

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

1 Ответ

0 голосов
/ 17 апреля 2011

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

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

...