1

重複の可能性:
MVC4/WebAPI で RSS フィードを作成する

コントローラーが rss を返すようにします。MVC 3 では、派生元を作成して rss、派生元を作成Controllerし、Controllerそれをコントローラーに返すだけで、すべてがうまく機能します。RssResultActionResult

私の問題は、どのようにController派生元でそれを行うことができApiControllerますか?

ご協力いただきありがとうございます :)

- - - - - - - - アップデート - - - - - - - -

これが私のコントローラーです:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        List<IRss> list = new List<IRss>
                              {
                                  new Product
                                      {
                                          Title = "Laptop",
                                          Description = "<strong>The latest model</strong>",
                                          Link = "/dell"
                                      },
                                  new Product
                                      {
                                          Title = "Car",
                                          Description = "I'm the fastest car",
                                          Link = "/car"
                                      },
                                  new Product
                                      {
                                          Title = "Cell Phone",
                                          Description = "The latest technology",
                                          Link = "/cellphone"
                                      }
                              };
        return new RssResult(list, "The best products", "Here is our best product");
    }

これが私のRssResult

public class RssResult : ActionResult
{
    private List<IRss> items;
    private string title;
    private string description;

    /// <summary>
    /// Initialises the RssResult
    /// </summary>
    /// <param name="items">The items to be added to the rss feed.</param>
    /// <param name="title">The title of the rss feed.</param>
    /// <param name="description">A short description about the rss feed.</param>
    public RssResult(List<IRss> items, string title, string description)
    {
        this.items = items;
        this.title = title;
        this.description = description;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        XmlWriterSettings settings = new XmlWriterSettings
                                         {Indent = true, NewLineHandling = NewLineHandling.Entitize};

        context.HttpContext.Response.ContentType = "text/xml";

        using (XmlWriter writer = XmlWriter.Create(context.HttpContext.Response.OutputStream, settings))
        {
            // Begin structure
            writer.WriteStartElement("rss");
            writer.WriteAttributeString("version", "2.0");
            writer.WriteStartElement("channel");

            writer.WriteElementString("title", title);
            writer.WriteElementString("description", description);
            writer.WriteElementString("link", context.HttpContext.Request.Url.GetLeftPart(UriPartial.Authority));

            // Individual item
            items.ForEach(x =>
                              {
                                  writer.WriteStartElement("item");
                                  writer.WriteElementString("title", x.Title);

                                  writer.WriteStartElement("description");
                                  writer.WriteCData(x.Description);
                                  writer.WriteEndElement();
                                  writer.WriteElementString("pubDate", DateTime.Now.ToShortDateString());

                                  writer.WriteElementString("link",
                                                            context.HttpContext.Request.Url.GetLeftPart(
                                                                UriPartial.Authority) + x.Link);
                                  writer.WriteEndElement();
                              });

            // End structure
            writer.WriteEndElement();
            writer.WriteEndElement();
        }
    }
}

すべてがうまく機能します。しかし今、私のコントローラーは に変わりますpublic class HomeController : ApiController。では、この新しいコントローラーを古いコントローラーとして機能させるにはどうすればよいでしょうか? Index新しいメソッドをどのように定義すればよいですか?

4

1 に答える 1

0

私の知る限り、ASP.NET MVC でさえ組み込みの RssResult を持っていません。WebAPI についても、次の SO 回答に記載されているものと同様のものを実装する必要があります。

ASP.NET MVC の RSS フィード

于 2013-01-18T05:26:13.263 に答える