我有一个多步注册过程,由一个域层中的单个对象,它们具有在属性上定义的验证规则。当域被分割到多个视图时,我应该如何验证域对象,并且在发布时必须在第一个视图中部分保存该对象?我考虑过使用会话,但这是不可能的,因为这个过程很长,数据量很大,所以我不想使用会话。我考虑将所有数据保存在内存中的关系数据库中(使用与主db相同的模式),然后将数据刷新到主db,但是出现了一些问题,因为我应该在使用主db和内存中数据库的服务(视图中请求)之间路由。我正在寻找一个优雅而干净的解决方案(更准确地说是一个最佳实践)。更新和澄清:达林,谢谢你周到的回答,这正是我到现在为止所做的。但顺便提一句,我有一个包含很多附件的请求,我设计了一个Step2View例如,哪个用户可以异步地上传文档,但是这些附件应该保存在一个表中,该表与之前应该保存的另一个表具有引用关系。Step1View.因此,我应该将域对象保存在Step1(部分),但我不能,因为部分映射到步骤1的视图模型的支持核心域对象无法保存,没有转换的道具Step2ViewModel.
3 回答
SMILET
TA贡献1796条经验 获得超4个赞
例如,我们有一个三步向导进程。
提供了步骤1的用户有一个标记为“Next”的按钮。 在单击Next时,我们发出一个Ajax请求,并创建一个名为Step 2的DIV,并将HTML加载到该DIV中。 在步骤3中,我们在点击按钮时有一个标记为“已完成”的按钮,使用$.post Call发布数据。
public class Wizard { public Step1 Step1 {get;set;} public Step2 Step2 {get;set;} public Step3 Step3 {get;set;}}public ActionResult Step1(Step1 step){ if(Model.IsValid) { Wizard wiz = new Wizard(); wiz.Step1 = step; //Store the Wizard in Session; //Return the action }}public ActionResult Step2(Step2 step){ if(Model.IsValid) { //Pull the Wizard From Session wiz.Step2=step; }}
以上只是一个帮助你达到最终结果的演示。在最后一步中,您必须创建域对象并从Wizard对象中填充正确的值并将其存储到数据库中。
- 3 回答
- 0 关注
- 445 浏览
添加回答
举报
0/150
提交
取消