我有一个包含普通 MVC 控制器和 web api 控制器的 web MVC 应用程序。
什么是从同一项目中的正常 MVC 控制器操作调用 Web api 控制器的正确方法?
我有一个包含普通 MVC 控制器和 web api 控制器的 web MVC 应用程序。
什么是从同一项目中的正常 MVC 控制器操作调用 Web api 控制器的正确方法?
ASP.Net Web API 旨在通过 HTTP 调用,而不是从您的服务器端逻辑调用。也许您呈现的演示文稿可以通过客户端请求(例如 ajax)调用您的 Web API。
如果您发现自己的 MVC 控制器的操作需要执行仅在 Web API 操作中可用的代码,那么您应该考虑将该代码与您的 Web API 分离,并将其移动到代码中更与平台无关的区域(服务层?)。
如果您只需要一种将 JSON(或类似的)发送回客户端的方法,您可以简单地选择从 MVC 控制器返回除视图之外的其他内容。然后这一切都在您的 MVC Web 应用程序中处理,您不需要使用 Web API。
public JsonResult DetailsJson(int id)
{
Car car = carRepository.Find(id);
return Json(car, JsonRequestBehavior.AllowGet);
}
然后将使用调用此示例
/Cars/DetailsJson/3
请注意,出于测试原因,示例中允许 GET(通过添加 JsonRequestBehavior.AllowGet),如果您只想支持 POST 请求,可能会将其删除。
请参阅从 MVC 控制器调用 WEBAPI 服务是一种反模式吗?
简而言之,使用 httpclient 来访问您的 api。