2

有一個多頁的好簡單的解決方案 「嚮導」 控制MVC這裏:ASP.NET MVC 2 RC 2 「精靈」 爲整個模型驗證

http://www.highoncoding.com/Articles/647_Creating_Wizard_Using_ASP_NET_MVC_Part_1.aspx

http://www.highoncoding.com/Articles/652_Creating_Wizard_in_ASP_NET_MVC_Part_2.aspx

該模型在幾個步驟中進行填充,並使用隱藏字段在頁面之間保持數據(與ViewState有點類似)。然而,隨着MVC 2 RC2的發佈,驗證機制已經從「輸入驗證」改爲「模型驗證」: http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html

現在的第一頁中從來沒有得到確認的「精靈」,因爲它只是填充模型的一部分。 (剩餘部分將在後續步驟中填充,但由於可能有必填字段,因此在驗證第一頁時會顯示驗證錯誤,並且用戶無法繼續)。

有沒有辦法修改這個「嚮導控件」的實現來適應MVC RC2,還是應該重新考慮整個邏輯?有沒有更好的模式來創建一個多頁面的「嚮導控件」來填充模型?

回答

3

我簡要閱讀了列出的文章。我認爲問題在於您要將域對象(演示中的客戶)傳遞到兩個屏幕進行編輯。一半的顧客在第一個屏幕上被編輯,另一半在下一個屏幕上被編輯。

這個模式應該可以幫助你,而不是將你的實際模型(客戶)傳遞給你的演示文稿,你應該(恕我直言)只傳遞一個「視圖模型」。這就是說,每個視圖(或本例中的嚮導中的步驟)都有自己的模型。 CustomerNameViewModel和CustomerAddressViewModel可能是列出的教程的適當對象。這意味着每個對象在返回驗證時都會充分填充數據。一旦對象已被適當驗證,您就可以填充您的客戶對象。一旦客戶對象在嚮導結束時完成,您就會堅持客戶對象。