我有一個多步注冊過程,由一個域?qū)又械膯蝹€對象,它們具有在屬性上定義的驗證規(guī)則。當域被分割到多個視圖時,我應該如何驗證域?qū)ο?,并且在發(fā)布時必須在第一個視圖中部分保存該對象?我考慮過使用會話,但這是不可能的,因為這個過程很長,數(shù)據(jù)量很大,所以我不想使用會話。我考慮將所有數(shù)據(jù)保存在內(nèi)存中的關系數(shù)據(jù)庫中(使用與主db相同的模式),然后將數(shù)據(jù)刷新到主db,但是出現(xiàn)了一些問題,因為我應該在使用主db和內(nèi)存中數(shù)據(jù)庫的服務(視圖中請求)之間路由。我正在尋找一個優(yōu)雅而干凈的解決方案(更準確地說是一個最佳實踐)。更新和澄清:達林,謝謝你周到的回答,這正是我到現(xiàn)在為止所做的。但順便提一句,我有一個包含很多附件的請求,我設計了一個Step2View例如,哪個用戶可以異步地上傳文檔,但是這些附件應該保存在一個表中,該表與之前應該保存的另一個表具有引用關系。Step1View.因此,我應該將域?qū)ο蟊4嬖赟tep1(部分),但我不能,因為部分映射到步驟1的視圖模型的支持核心域?qū)ο鬅o法保存,沒有轉(zhuǎn)換的道具Step2ViewModel.
3 回答

SMILET
TA貢獻1796條經(jīng)驗 獲得超4個贊
例如,我們有一個三步向?qū)нM程。
提供了步驟1的用戶有一個標記為“Next”的按鈕。 在單擊Next時,我們發(fā)出一個Ajax請求,并創(chuàng)建一個名為Step 2的DIV,并將HTML加載到該DIV中。 在步驟3中,我們在點擊按鈕時有一個標記為“已完成”的按鈕,使用$.post Call發(fā)布數(shù)據(jù)。
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; }}
以上只是一個幫助你達到最終結(jié)果的演示。在最后一步中,您必須創(chuàng)建域?qū)ο蟛腤izard對象中填充正確的值并將其存儲到數(shù)據(jù)庫中。
- 3 回答
- 0 關注
- 471 瀏覽
添加回答
舉報
0/150
提交
取消