1
上周,我下载了在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);
}
如您所见,存储库直接在视图模型中(在构造函数中)实例化。这是一个正确的方式吗?
通常情况下,我用这样的业务层,最后一个服务层: 控制器>>业务>>库
谢谢你的建议。
感谢Darin,这是我寻找的回应:)我阅读了一篇关于填充视图模型的帖子(2个月前回复的地方),这对我来说似乎是一个更好的方法,所以我会这样做。这里是:http://stackoverflow.com/questions/7943039/how-are-you-populating-validating-your-viewmodels – Bronzato 2011-12-29 07:45:50