asp.net-mvc - 如何在复杂的向导中为下一步/上一步构建代码?

标签 asp.net-mvc wizard

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

最佳答案

我的建议是创建一个接口(interface)类,如:

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;}
}

您现在可以在 DB 或 XML 中添加一个表,在其中设置所有可用的步骤,并为每个步骤分配一个具体的类来实现接口(interface) IStepDecisionMaker

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

通过这种方式,您可以实现几件事
  • 您的操作只需几行代码
  • 逻辑不是大量的 if then 而是在每个类中
  • 您可以直接在特定步骤的具体类中更改某些条件,而无需触及代码的其他部分

  • 恕我直言

    关于asp.net-mvc - 如何在复杂的向导中为下一步/上一步构建代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520006/

    相关文章:

    python - 使用 Django 模型表单 + 表单向导 + Crispy - 不进行第二步

    javascript - 如何获取 Knockout.js 向导中单选按钮选项的值?

    asp.net - 如何在同一文件夹中混合 MVC View 和 ASPX 页面?

    c# - 使用多个工作表创建 excel

    javascript - 向 css 添加绝对路径会导致 Gecko Engine 无法呈现页面

    c++ - 为什么 VS2010 向导在 ctor 和 dtor 中添加 void 类型?

    c++ - 要添加到 .pro 文件中的 Qt Creator 变量

    jquery - MVC 自定义验证 : compare two dates

    c# - 如何在 ASP.Net MVC3 应用程序中托管 WCF 数据服务

    Java JTabbedPane 问题