ASP.NET Core MVC-特定于控制器的复杂对象

时间:2019-04-11 22:52:41

标签: asp.net-mvc asp.net-core controller asp.net-core-mvc

我正在实时学习(从桌面的角度来看),因此,如果这看起来很愚蠢,请原谅我。

这将是CRUD类型的应用程序,因此,假设您有两个用于数据输入的控制器:

SupervisorController
EmployeeController

现在,假设用户转到https://whatever/SupervisorController,在执行任何操作之前,我需要创建一些特定于Supervisor屏幕的对象(例如,我创建一个Access对象,该对象从源中读取一些数据,告诉我他们可以在该特定Supervisor屏幕上访问什么。

好的,在我的Index方法中,我构造了该对象并将其传递给我的视图。但是,当说该控制器的另一个方法被调用,或者说单击浏览器上的Refresh(每次都调用该控制器的构造函数)时,该对象将不会持久。

假设用户进入浏览器并自己输入https://whatever/SupervisorController/AnotherMethod。好吧,我只在索引方法中构造了该对象。所以现在我必须再次构造相同的对象,在那里?并将其传递给该视图?

我要讲的是,如果有人去了SupervisorController的任何方法,如果对象不存在,我想构造一些“ supervisor”特定对象,并将其保留在“私有成员变量”中,直到完成SupervisorController为止。意思是,如果他们继续说EmployeeController,这些对象现在可以消失了。

在EmployeeController,我想要类似的东西。专为Employee CRUD创建的复杂对象,一旦完成对employees的使用就不再需要。

我的意思是,我真的不想创建这些对象并将它们存储在Session的整个生命周期中,因为它们实际上仅是其特定控制器所需要的。最重要的是,我真的想在会话内存中存储多少数据,然后再存储太多!

但是,如果我不将它们存储在某处,则必须针对每种操作/方法重新创建这些对象。我不想在特定控制器的每种方法中创建它们(我可能会去数据库以获取一些特定信息)。例如,我在索引页面上玩一个网格控件,当您到达该页面时,首先调用了Index方法,然后网格本身调用了我拥有的这个Read方法。因此,我将创建该对象两次!一次打给https://whatever/SupervisorController的电话吗?

人们如何处理我要实现的目标?还是我现在需要某种方式查看它,并按照那些指南实施它?

0 个答案:

没有答案