0

现在我有几个图层到我的项目:核心<>存储库<> API ...我将建立一个“客户端”MVC web项目层。我的问题是 - viewModels在这个架构中属于哪里?viewModels如何适合使用ASP .NET MVC的WebApi实现?

Web项目的控制器方法应该调用API(多次 - getTheseObjects,getThoseObjects)来获取数据,然后构建viewModel?或者API支持调用构造viewModel,以便每个页面只需要为应用程序调用一个API调用(getAllObjectsForThisPage)?

回答

1

您的视图模型将属于您的客户端MVC应用程序。它们将特定于该单独客户端应用程序中的视图,并且通常将由域对象填充。 这就是它的工作方式:控制器调解https请求,从而调用API端点并接收一些数据或域对象,然后用它来填充视图模型。

看看automapper如果您从api返回域对象,它确实有助于将域对象映射到视图模型。

0

您可以将ViewModels放置到您的MVC应用程序中,但您可以创建一个名为DTO(数据转换对象)并将其从Web API返回给您的客户端的东西。实质上,它只是一个只有你传递给客户的必要信息的类。如果你想调用ViewModel,你可以继续并像这样调用它。我的建议是发出一个电话并返回所有必要的信息。一个呼叫一次旅行。

我的做法通常是将ViewModel与MVC分开,并将其存储在其他项目中。服务层将准备一个ViewModel并将其返回给MVC。原因是,一旦我需要在MVC完成后构建WPF应用程序。移动东西并重新测试一切以确保它仍然正常工作是一件非常痛苦的事情。