На прошлой неделе я скачал исходный код движка блога, разработанного в ASP.NET MVC3.При анализе кода я заметил, что они использовали другой способ получения данных для заполнения модели представления.
Вот пример для модели представления «пост»:
Контроллер:
public ActionResult Details(string slug)
{
var model = new PostDetailsViewModel(UnitOfWork, slug);
return View(model);
}
Модель представления:
public PostDetailsViewModel(IUnitOfWork unitOfWork, string slug)
{
_repository = new PostRepository(unitOfWork);
Post = _repository.FindBySlug(slug);
}
Репозиторий:
public Post FindBySlug(string slug)
{
return FindAll().SingleOrDefault(x => x.Slug == slug);
}
Как видите, экземпляр создается непосредственно в модели представления (в конструкторе).Это правильный путь?
Обычно я использовал бизнес-уровень и, в конечном итоге, такой сервисный уровень: Контроллер >> Бизнес >> Репозиторий
Спасибо за ваш совет.