如何在复杂向导中构造下一个/上一个步骤的代码?

时间:2012-11-22 21:08:21

标签: asp.net-mvc wizard

我有一个45步向导UI(复杂域 - 保险)。它是在ASP.NET MVC 3中实现的。问题是我的动作方法有很多代码来确定下一步是什么,取决于用户,已收集的数据,天气预报......更糟糕的是,类似的代码重复了后退按钮功能。我可以使用一种模式来抽象这种逻辑吗?我希望有一种方法来定义前进步骤并自动后退步骤。

1 个答案:

答案 0 :(得分:0)

我的建议是创建一个类如下的接口:

public interface IStepDecisionMaker
{
     StepInfo DefineNextPreviousStep(object data);
}

public class StepInfo {
    public int NextStepId {get;set;}
    public int PreviousStepId {get;set;}
    public object Values {get;set;}
}

现在可以在数据库或XML中添加一个表,其中设置所有可用步骤,每个步骤为它们分配一个实现接口IStepDecisionMaker的具体类

在您的操作中,您可以收集步骤的数据,并使用IoC系统或反射CreateInstance,您可以创建具体类的实例,调用DefineNextPreviousStep传递您需要检查的数据,该方法可以返回一个类这将告诉你下一步或前一步是什么

通过这种方式,您可以实现多种目标

  1. 您的操作只需几行代码
  2. 如果那时逻辑不是很多,而是在每个班级里面
  3. 您可以直接在特定步骤的具体类中更改某些条件,而无需触及代码的其他部分
  4. IMHO