1

フィードを消費するための小さなユーザーコントロールを作成しました。このユーザーコントロールのコードは次のようになります。

<%@ 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が必要です。

誰かが私がどこで間違っているのかを理解するのを手伝ってくれますか:)

4

1 に答える 1

0

Html.RenderPartial の代わりに Html.RenderAction("Index","Rss") を使用できますか? Html.RenderAction が ViewEngine によって呼び出されると、Index アクションのすべてのコードが実行され、RSS データを含むモデルが Index ビューに送られ、マークアップに生成されます。また、なぜ Response.Write を使用するのでしょうか。html タグを配置すると、Html.RenderAction を呼び出している場所にこのマークアップが挿入されます。役に立てば幸いです。そうでない場合は、申し訳ありませんが、少なくとも私は試しました))

よろしく、ディマ。

于 2011-04-17T18:32:59.607 に答える