我想知道是否最好将一个控制器用于加载大致相同数据的多个视图,或者为每个视图使用一个控制器。
如果可以像这样使用控制器:
[Route("api/[controller]")]
public class MultiplePagesController : Controller
{
[HttpGet]
public async Task<IActionResult> GetA()
{ ... return viewA }
[HttpGet]
public async Task<IActionResult> GetB()
{ ... return viewB }
}
在我的serviceViewA.ts中:
getA() {
return this.http.get<InterfaceA>(`${this.baseUrl}/api/multiplepages/`);
}
我的serviceViewB.ts:
getB() {
return this.http.get<InterfaceB>(`${this.baseUrl}/api/multiplepages/`);
}
因为我们假设viewA返回书籍数据,而viewB返回书籍和计算机的数据。
我正在使用MVC .NET CORE
答案 0 :(得分:2)
事实上,如果它使用一个控制器(和方法)是一个好主意,如果它完全相同,你可以通过这种方式减少代码,使其易于在一个地方维护和修改,而不是全部该项目。将其视为功能的容器。如果您有一个Book控制器,那么您将所有与书籍相关的方法放在那里,对于User,您将把所有用户方法放在那里。
至于你的第二个问题,那就违背了多态性。您的功能签名完全相同,如何区分?您需要为其指定不同的名称或接受参数(与其他功能或不同的数据类型不同)。
值得注意的是,您可以使用不同的方式命名您的函数以返回视图。
例如:
public async Task<IActionResult> GetViewA(){ // ... }
public async Task<IActionResult> GetViewB(){ // ... }
您可以输入:/Controller/GetViewB
作为路径来调用这些视图。