Слайд 2Дублирование кода
http://www.flickr.com/photos/popilop/331357312/

Слайд 6http://en.wikipedia.org/wiki/File:2000_core-repository02_hg.jpg

Слайд 7Template Helpers
+ Shared Views

Слайд 13Снова дублирование кода
http://www.flickr.com/photos/kugelfisch/4663326851/

Слайд 14Совершенствование Shared Views
Наследование от базовых контроллеров
Generic контроллеры

Слайд 15Вариант generic-контроллеров
http://aivolkov.ru/2010/10/
aspnet-mvc-and-generic-controllers/

Слайд 19Generic-пути к View-файлам
VirtualPathProviderViewEngine.FindView
и
VirtualPathProviderViewEngine. GetPathFromGeneralName

Слайд 20Generic-пути к View-файлам
string virtualPath = location
.Format(name, controllerName, areaName);
string urlPart = controllerContext.RouteData.Values[“urlPart"];
string virtualPath

= location
.Format(name, controllerName, areaName, urlPart);
Слайд 21Generic-пути к View-файлам
ViewLocationFormats = new[] {
"~/Views/{1}/{3}/{0}.cshtml",
"~/Views/{1}/{3}/{0}.vbhtml",
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
![Generic-пути к View-файлам ViewLocationFormats = new[] { "~/Views/{1}/{3}/{0}.cshtml", "~/Views/{1}/{3}/{0}.vbhtml", "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml" };](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368759/slide-20.jpg)
"~/Views/Shared/{0}.vbhtml"
};
Слайд 23Плюсы от применения подобных подходов
Заметно снижается дублирование кода
Снижается себестоимость разработки
Заметно уже при

числе источников данных на одну generic-схему > 5
Слайд 24Подводные камни
Очень сложные схемы и интерфейсы
Применение в неподходящих случаях
