Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 所需的设计模式_Asp.net Mvc_Asp.net Mvc 4_Design Patterns - Fatal编程技术网

Asp.net mvc 所需的设计模式

Asp.net mvc 所需的设计模式,asp.net-mvc,asp.net-mvc-4,design-patterns,Asp.net Mvc,Asp.net Mvc 4,Design Patterns,客户可以下一个订单。每个订单在交付前都会经历不同的阶段。 假设有许多阶段A、B、C、D、E。通过这些阶段的移动将由单个客户机手动完成。 从A->B(或)E,B->C,C->D(或)E 每个阶段都需要用户提供不同的输入,才能进入下一阶段。所有这些输入都是系统中建模的不同实体 在UI级别,我有一个下拉列表。如果当前状态为A,则下拉列表显示B和E。如果为B,则显示C。 下拉列表的值来自主表中的数据库。在选择不同的选项时,我使用JQuery向用户显示不同的表单 在.cshtml页面和服务器端的代码中都有

客户可以下一个订单。每个订单在交付前都会经历不同的阶段。 假设有许多阶段A、B、C、D、E。通过这些阶段的移动将由单个客户机手动完成。 从A->B(或)E,B->C,C->D(或)E

每个阶段都需要用户提供不同的输入,才能进入下一阶段。所有这些输入都是系统中建模的不同实体

在UI级别,我有一个下拉列表。如果当前状态为A,则下拉列表显示B和E。如果为B,则显示C。 下拉列表的值来自主表中的数据库。在选择不同的选项时,我使用JQuery向用户显示不同的表单

在.cshtml页面和服务器端的代码中都有多个if。有没有更好的办法? 在这种情况下,有什么设计模式可以帮助我吗


如果我做错了什么,请提出建议。

此响应不是特定于asp的,适用于任何编程环境

您的系统具有定义良好的阶段以及这些阶段之间的转换。这与状态模式非常匹配

状态模式为每个状态提供了一个具体上下文类(保存当前状态)一个抽象状态类和一个具体状态子类。在您的情况下,您有明显的状态A、B、C、D、E,但您可能还需要一个用于初始化的进入状态和一个用于清理的退出状态

例如,状态A将封装所有逻辑,以调用阶段A的正确菜单和表单,并处理用户输入。A国还负责向B国过渡

通过应用程序的控制流可以通过状态转换图来说明。在这里阅读有关它们的文章

您可以在这里阅读有关asp实现的状态模式

状态模式的优点是,您可以添加新的状态,而无需复杂的逻辑,而且您还可以摆脱控制程序流所需的大if/else块。在每一个州,你仍然需要做出决定来决定下一个州,但这是非常可控的


学习状态模式的最佳方法是做一些示例,并从应用于简单情况开始,直到您有信心重构您的应用程序。

此响应不是特定于asp的,适用于任何编程环境

您的系统具有定义良好的阶段以及这些阶段之间的转换。这与状态模式
非常匹配

状态模式为每个状态提供了一个具体上下文类(保存当前状态)一个抽象状态类和一个具体状态子类。在您的情况下,您有明显的状态A、B、C、D、E,但您可能还需要一个用于初始化的进入状态和一个用于清理的退出状态

例如,状态A将封装所有逻辑,以调用阶段A的正确菜单和表单,并处理用户输入。A国还负责向B国过渡

通过应用程序的控制流可以通过状态转换图来说明。在这里阅读有关它们的文章

您可以在这里阅读有关asp实现的状态模式

状态模式的优点是,您可以添加新的状态,而无需复杂的逻辑,而且您还可以摆脱控制程序流所需的大if/else块。在每一个州,你仍然需要做出决定来决定下一个州,但这是非常可控的

学习状态模式的最佳方法是做一些示例,并从应用于简单情况开始,直到您有信心重构应用程序为止