重複の可能性:
MVC4/WebAPI で RSS フィードを作成する
コントローラーが rss を返すようにします。MVC 3 では、派生元を作成して rss、派生元を作成Controller
し、Controller
それをコントローラーに返すだけで、すべてがうまく機能します。RssResult
ActionResult
私の問題は、どのように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
新しいメソッドをどのように定義すればよいですか?