Asp.net mvc 从MVC控制器调用web API来构建模型并将模型传递给视图

Asp.net mvc 从MVC控制器调用web API来构建模型并将模型传递给视图,asp.net-mvc,razor,asp.net-web-api,Asp.net Mvc,Razor,Asp.net Web Api,我正试图掌握许多对我来说是新概念的概念,我需要澄清使用Web API创建强类型模型并将其从MVC控制器传递到Razor视图的最佳方法 正如在许多示例中所看到的,您通常从某个存储库创建模型,然后将其传递给视图(强类型或非强类型),然后使用Razor语法来访问您的模型以构建html,而不必使用JavaScript 对我来说,事情变得复杂的是,当我想使用WebAPI来创建我想使用的模型时,就像我在上一段中描述的那样 我应该调用新的HTTPClient来从控制器中调用Web API服务吗? 我需要反序列

我正试图掌握许多对我来说是新概念的概念,我需要澄清使用Web API创建强类型模型并将其从MVC控制器传递到Razor视图的最佳方法

正如在许多示例中所看到的,您通常从某个存储库创建模型,然后将其传递给视图(强类型或非强类型),然后使用Razor语法来访问您的模型以构建html,而不必使用JavaScript

对我来说,事情变得复杂的是,当我想使用WebAPI来创建我想使用的模型时,就像我在上一段中描述的那样

我应该调用新的HTTPClient来从控制器中调用Web API服务吗? 我需要反序列化并格式化响应吗?等等

我总是在视图中看到来自脚本的调用和操作

有人能给我指一下正确的方向吗


谢谢。

如果您的WebAPI是一个单独的端点,即不是现有站点的一部分,那么是的,您必须从控制器内部发送,然后序列化响应中的数据并将其传递到视图中


或者,您可以通过AJAX从视图内部直接调用API,但是,我不确定您是否需要控制器在数据进入视图之前对其进行处理。

我不太确定是否理解您的设置。您是使用
ApiController
s将数据返回到视图,还是从标准MVC控制器内部调用另一个WebAPI控制器?嗨,James,我是从标准MVC控制器内部调用WebAPI控制器。现在,由于我正在练习,它可能是来自同一个MVC应用程序的apicontroller,但我最终将不得不构建独立的WebAPI服务,我将从其他应用程序调用这些服务。谢谢你的回答。如果唯一的消费者是我的MVC应用程序,那么说没有必要使用ApicController是对的吗?可以这样看——ApicController返回数据,例如XML/Json供客户端消费,标准MVC控制器返回要提供给浏览器的视图。标准控制器也可以返回数据,但为此,请将其视为视图控制器。所以考虑到所有因素,问问自己需要什么类型的控制器。。。