В Ruby on Rails вы можете написать простое действие контроллера, например:
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
Для тех, кто не знаком с RoR, def index
в этом случае будет эквивалентом public ActionResult Index()
в ASP.Net MVC Controller и позволит следующие вызовы:
http://example.com/Movies/Index
возвращается как html-страница из представления index.html.erb
(think index.aspx) http://example.com/Movies/Index.xml
возвращает те же данные в формате xml (@movies
- это объект, содержащий данные, используемые всеми видами просмотров) http://example.com/Movies/Index.json
возвращает строку JSON, полезную при выполнении javascript-вызовов, требующих одинаковых данных/логических
Эквивалентный поток в ASP.Net MVC (если возможно), вероятно, будет выглядеть примерно так (если он может быть менее подробным, даже лучше):
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();
}
}
Это действительно не нужно держать кучу разных действий, загромождающих ваш контроллер, есть ли способ сделать что-то подобное в ASP.Net MVC?