调用独立Web API以在ASP.NET MVC中填充ViewModel

时间:2016-12-08 22:36:33

标签: asp.net asp.net-mvc asp.net-web-api asp.net-mvc-5 asp.net-core

假设我有一个独立的ASP.NET Core Web API作为自己的项目(因为我不想将它与我的MVC应用程序合并)

我现在想要创建一个MVC Web应用程序(另一个项目,但是相同的解决方案),它将调用API。我知道对于ajax请求,我将通过JavaScript直接调用API,这是直截了当的。 但是,我有点困惑的是 MVC控制器如何调用相同的API来填充ViewModel并在用户请求页面时发送到View,即http://myurl/books/1

我知道如果我使用像Angular这样完全是客户端的东西,我就不会遇到这个问题。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。我能想到三种不同的方法:

  • 第一种是使用HTTPClient对象从MVC控制器调用相同的API。可能看起来有点怪异的呼唤"你自己"在服务器端但它的工作原理。在我看来,这不是一个很好的解决方案,因为您正在丢失类型检查,并且您还会通过网络进行不必要的调用,并且您还必须从WebAPI解析并转换响应到您的.net对象。

  • 第二种方法是将API中的所有逻辑移动到一个新项目中,并将其全部编译为DLL。然后,您的Web Api可以调用库中的代码,您的MVC项目也可以执行此操作。一个很好的方法。

  • 第三种方法是做你已建议的 - 不要在MVC项目内的服务器端填充模型,只需从客户端完成。是的,这对Angular很有用,但你也可以使用bog标准的JQuery或Knockout自己做。这种方法意味着更多的客户端javascript编写(使用Typescript!),但你最终会得到更好的关注点分离和更清晰的解决方案。