In Ruby on Rails you can write a simple controller action such as:
def index
@movies = Movies.find(:all)
respond_to do |format|
format.html #index.html.erb
format.xml { render :xml => @movies }
format.json { render :json => @movies }
end
end
For those unfamiliar with RoR, def index
in this case would be the equivalent of public ActionResult Index()
within an ASP.Net MVC Controller and would allow the following calls:
http://example.com/Movies/Index
returns as an html page from the view index.html.erb
(think index.aspx)
http://example.com/Movies/Index.xml
returns the same data in xml format (@movies
is the object containing the data all of the views use)
http://example.com/Movies/Index.json
returns a JSON string, useful when making javascript calls needing the same data/logic
An equivalent flow in ASP.Net MVC would (if possible) likely look something like this (if it could be less verbose, even better):
public ActionResult Index()
{
Movies movies = dataContext.GetMovies();
// any other logic goes here
switch (format)
{
case "xml":
return View("XMLVIEW");
break;
case "json":
return View("JSONVIEW");
break;
default:
return View();
}
}
This is really handy not having to keep a bunch of different actions cluttering up your controller, is there a way to do something similar in ASP.Net MVC?