我正在开始学习 asp.net core,并且在理解一些基本模式方面遇到问题。我可以在 PageController 中使用 ApiController 吗?例如//Home controllerpublic async Task<IActionResult> Index(){ var artists = await _artistController.GetAll(); var t = artists.GetValue(); var indexModel = new Models.Pages.IndexModel { Artists = artists.GetValue() //Extension method }; return View(indexModel);}//ArtistRestController[HttpGet]public async Task<ActionResult<IEnumerable<Artist>>> GetAll(){ try { return Ok(await _repository.GetAll()); } catch (Exception ex) { _logger.LogError(ex.Message); return BadRequest(ex.Message); }}它可以工作,但是设计上可以吗?也许我应该直接调用_repository.GetAll()而不使用其他控制器?
1 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
首先,您应该避免在一个控制器中使用另一个控制器。对于Controller来说,它用于处理来自客户端的http请求。即使它是一个类,但将其用作一个类是不合理的。
其次,组合起来ApiController
会使PageController
你的应用程序不稳定并且耦合性太强。如果您稍后更改任何内容ArtistRestController.GetAll
都会HomeController
损坏。而且,对于您当前的代码,如果 中存在一些异常PageController
,您的ApiController
代码将会失败。
您应该注入repository
来查询数据。
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报
0/150
提交
取消