在一个 ASP.NET MVC 应用程序中,我正在为一个分步信息收集序列创建一个向导,该序列由每个屏幕/视图/页面中的许多不同字段组成。
我打算在后台异步保存信息。
什么是模式推荐:
1.基于向导的序列本身?
2.信息的增量保存?
在 ASP.NET MVC 中是否有针对典型向导(如此类应用程序)的推荐/模板?
在一个 ASP.NET MVC 应用程序中,我正在为一个分步信息收集序列创建一个向导,该序列由每个屏幕/视图/页面中的许多不同字段组成。
我打算在后台异步保存信息。
什么是模式推荐:
1.基于向导的序列本身?
2.信息的增量保存?
在 ASP.NET MVC 中是否有针对典型向导(如此类应用程序)的推荐/模板?
我是一个 Java 人,但我想我会分享我最近采用的一种可能有用的向导类型流程的方法。
首先,流程中的某些页面仅适用于其他页面的输入,并且整个事情严重依赖可能更改的后端数据(例如,用户启动流程,将其保存为草稿并返回到它,但现在后端数据发生了变化,现在需要一些以前不需要的用户输入)。
为了处理所有这些,我将后端代码与页面流分离——后端代码(也称为服务层)不知道用户在哪个页面上,不知道哪些页面上有哪些字段,也不知道哪个页面将用户发送到下一个。它所做的只是通过向导验证用户正在填充的整个数据结构(不管用户是否已经访问了数据结构的一部分)。每个未通过验证的数据元素都附加了一个错误。前端代码(即控制器层)只是查找这些错误并确定页面序列中可以解决任何错误的第一页并将用户发送到该页面。如果用户刚刚发布了该页面(并且服务层已将错误添加到由该页面上的字段表示的数据元素),
这种方法的缺点是服务层正在运行甚至不适用的验证(因为它不知道用户在过程中的位置)但它有一个巨大的优势 - 字段可以在页面之间移动,重新排序的页面,您命名它,并且不必触及服务层。唯一需要改变的是控制器层中错误之间的映射以及用于解决错误的页面。
在经历了对该向导进行了重大更改的项目的多个版本之后,该设计具有令人难以置信的弹性(抱歉,我对此感到有点自豪)。
我对你问题的另一部分没有任何建议,因为我从来没有大规模做过,但我相信你知道,你只想 AJAX 在字段时将字段值发送到服务器失去焦点(或根据控件进行单击)并更新您的模型。如果我要使其适合我的设计,我将只执行域验证(例如,它是否可解析为日期)并将其写入数据库而不经过服务层验证,然后只有当它们点击继续时才执行我运行我的服务层验证(此时他们可能会看到错误,例如“您输入的日期必须早于今天”)。我有一个类似的要求 - 他们可以随时保存他们的工作,只要我可以将他们的数据写入数据库(我不能将“abc”存储到日期字段中),