【发布时间】:2023-03-23 19:31:02
【问题描述】:
我正在实现一个 REST Web API。我使用 Adam Freeman 的 Pro ASP.NET MVC5 中的示例作为起点,但将其调整为 Web API 的实现方式。
以下是我的代码:
public class AdminController : ApiController
{
private IUserRepository _repository;
public AdminController(IUserRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
return View(_repository.Users);
}
}
在书中,AdminController 实现了Controller 而不是ApiController,但如果我这样做了,我会收到关于没有无参数构造函数的错误。我需要构造函数来获取参数,以便我可以注入依赖项。所以这就是为什么我改为ApiController,但现在它无法识别View。
对于ApiController,我需要使用什么来代替View?
我确实找到了this question,但答案基本上是“你不需要在这里使用 ApiController,只需使用 Controller”所以这对我没有帮助。
【问题讨论】:
-
您不会从 API 控制器返回视图。但是您可以从 MVC 控制器返回 API 数据。解决方案是纠正错误,而不是尝试破解 API 控制器。构造函数参数当然可以在控制器中用于依赖注入。也许您没有正确连接依赖解析器?
-
顺便说一句,你可以注入
ApiController和Controller-- 但你想要Controller -
@DavidTansey 这是 X/Y 问题吗?我应该问一个关于如何修复无参数构造函数错误的新问题吗?
标签: c# asp.net controller