Продолжу.
Плюсы по сравнению с ASP.NET MVC:
решается проблема передачи данных для view, в RoR мы никак не декларируем, что передаем. В MVC мы либо поступаем так же
ViewData["Products"] = db.Products.ByCategory(categoryId);
и теряем типизацию, либо вынуждены объявлять класс для типизации, и типизировать view что действительно геморойно.
// модель
class ProductListModel
{
public IEnumerable<Product> Products {get;set;}
}
// контроллер
var model = new ProductListModel() { Products = db.Products.ByCategory(categoryId) };
return View(model); // кстати попробуйте сделать вьюху с моделью типа string
// view, это спарк, самый краткий синтаксис, в ASP.NET мы получим еще больший оверхед
<viewdata model="ProductListModel">
Это все противоречит принципам DRY, чтобы передать простой список изделий мы должны сбегать в кучу мест и узаконить это простое намерение.
Хотя по идее достаточно вывести тип того что мы хотим передать и сгенерировать данный DTO класс.
избавляемся от строковых констант с именами и сигнатурами экшенов, контроллеров
В идеале синатксис
Html.ActionLink(product.Name, "Show", new {id = product.Id})
Может превартиться в:
Action.Show(product.Id).Link(product.Name)
Наличие этого экшена проверит компилятор.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>