2010-03-24 88 views
2

我正在開發一個應用程序,它有大量的相關表單數據需要處理。我正在使用MVC結構,並且所有相關數據都在我的模型中進行表示,以及從表單提交中處理數據驗證。我正在尋找一些關於如何佈置我的控制器的建議 - 基本上,我將擁有一個巨大的表單,該表單將被分解爲可管理的類別(類似於信用卡應用程序),用戶通過每個階段/類別填寫答案。所有這些形式類別都與主要關係/對象有關,但不與對方相關。表單MVC設計問題

將每個子窗體/類別作爲主控制器類中的方法(這將使得一個控制器相當龐大)是否更有意義,還是最好將每個類別分解爲主控制器的子類?第二種方法可能更好一些,但我很努力地看到爲每個類別創建一個新方法(與模型進行通信並輸出錯誤/成功)或創建一個新的控制器以處理相同的功能。

在此先感謝您的任何指導!

回答

1

我的選擇是爲每個顯示給用戶的表單創建三元組Form-Controller-Model。無論何時用戶點擊表單上的「下一步」按鈕,其控制器都應與後端管理器通話,後者負責將提交請求分發給鏈中的下一個表單。如果單擊「返回」按鈕,則爲副詩。最後一個表格有一個'完成'按鈕,它將轉到管理員並傳遞最後一部分信息。

這將避免繼承,使您的代碼更健壯並且可以單獨測試表單。

+0

乾杯鮑里斯,這種方法也是有道理的。我正在使用ORM,每個模型都代表一個數據庫關係,但是,在每個類別/子表單中,我可能會與多個模型進行交互,那麼您的方法在這種情況下是可行的嗎?道歉,如果我誤解了 – kenny99 2010-03-24 16:07:55

+0

乾杯肯尼,有模型和模型。 MVC的模型是支持視圖狀態的對象,即您的表單。您正在討論的模型是柵欄業務邏輯端的域對象模型。這就像有一家商店。您將使用不同的成語向客戶展示產品/服務,以及用於管理股票和融資的其他產品/服務。 – 2010-03-24 16:44:46

1

我的首選是將它全部保存在一個控制器中。它保留了在一個地方填寫申請/表格的所有相關流程,但我不確定您所談論的是多麼「大規模」。如果你決定拆分它,我不會從主控制器中分類出來,而只是製造一些獨立的控制器,或許與名稱相關,以便於在路上使用。

+0

謝謝瑞恩。大規模可能是一種誇張,但可能會有大約10種類別/方法,所以我開始對這種設計是否糟糕感到不安,因爲將所有這些存儲在一個控制器中 - 但正如您所說,它確實有意義,因爲它是一種形式的所有部分 – kenny99 2010-03-24 15:48:23

+0

控制器旨在處理一件「事情」的工作 - 您想如何定義由您決定的粒度。對兩個方向都有利弊,但我不知道是否真的有正確或錯誤的走向。 – 2010-03-24 16:23:06