我正在实时学习(从桌面的角度来看),因此,如果这看起来很愚蠢,请原谅我。
这将是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的电话吗?
人们如何处理我要实现的目标?还是我现在需要某种方式查看它,并按照那些指南实施它?