📅  最后修改于: 2023-12-03 14:59:26.668000             🧑  作者: Mango
在 AX 2012中,控制器类是MVC模式中的控制器。它是一个X++类,用于控制视图类和模型类之间的数据流并处理应用程序的业务逻辑。
要创建一个控制器类,需要继承SysOperationServiceController
类,并实现以下方法:
public void operationStarted()
{
super();
// 在操作开始时执行的代码
}
public void validate()
{
super();
// 在验证操作前执行的代码
}
public void run()
{
super();
// 在执行操作时执行的代码
}
public void operationCompleted()
{
super();
// 在操作完成后执行的代码
}
控制器类的作用是将视图类和模型类分离。视图类负责显示数据和处理用户输入,而模型类负责处理数据。在控制器类中,我们可以访问视图类和模型类。控制器类负责将视图类和模型类连接起来,并执行应用程序的业务逻辑。
控制器类提供了一些方法,使我们能够与视图类和模型类交互。
setView
- 设置视图类getView
- 获取当前视图类setModel
- 设置模型类getModel
- 获取当前模型类getParameter
- 获取传递给操作的参数getSettings
- 获取操作的设置以下示例将控制器类用于在AX 2012中创建销售订单。这个控制器类包含了视图类和模型类,并处理了创建订单的业务逻辑。
class SalesOrderController extends SysOperationServiceController
{
SalesOrderView salesOrderView;
SalesOrderModel salesOrderModel;
SalesTable salesTable;
public void operationStarted()
{
super();
salesOrderView = this.getCaller() as SalesOrderView;
salesOrderModel = new SalesOrderModel();
salesOrderModel.init();
}
public void validate()
{
super();
salesOrderModel.validate();
}
public void run()
{
super();
salesOrderModel.loadFromSalesOrderView(salesOrderView);
salesTable = salesOrderModel.createSalesOrder();
}
public void operationCompleted()
{
super();
salesOrderView.showSalesOrderNumber(salesTable.salesId);
}
}
class SalesOrderView
{
// 视图类代码
}
class SalesOrderModel
{
public void init()
{
// 初始化模型类
}
public void validate()
{
// 验证模型类
}
public void loadFromSalesOrderView(SalesOrderView salesOrderView)
{
// 从视图类中读取数据
}
public SalesTable createSalesOrder()
{
// 处理业务逻辑并创建销售订单
}
}
在这个示例中,我们定义了一个SalesOrderController
类,它包含了SalesOrderView
和SalesOrderModel
类。在operationStarted
方法中,我们获取了当前的视图类,并初始化了模型类。在validate
方法中,我们进行了模型类的验证。在run
方法中,我们从视图类中加载数据,并处理了创建销售订单的业务逻辑。在operationCompleted
方法中,我们显示了销售订单号。