2013-01-15 23 views
1

這裏的DB我的例子結構:MVC創建模型關係/更新動作

enter image description here

在學生視圖的形式,我已經添加了窗體中添加一個文件。

在學生管理員中,當我創建或更新條目時,我管理文件上載和創建文件數據庫條目。

我想知道的是,在MVC設計模式中,做到這一點的正確方法是什麼?是否我的學生管理員必須知道我的文件模型已完成並且必須知道如何添加文件?

或者最好的方法是在我的學生控制器中調用文件控制器的添加或更新操作?但是就這樣,我打破了MVC?

謝謝!

回答

0

途徑你正在打破MVC:

  • 控制器負責應用邏輯和甚至持久性(它應該只改變模型層和視圖的SATE)
  • 模型不是任何單個類,它是由不同職責組成的層(不存在「文件模型」或「學生模型」)

在最好的情況下,控制器沒有來自數據的反饋,它通過到模型圖層(優先通過一些服務,這將處理與領域模型層的應用程序邏輯)。

而是視圖實例,當它開始爲用戶組裝響應時,將檢查模型的狀態(再次通過服務),以查看是否有更改的內容。在上傳的情況下,這將是視圖發現上傳結果的點,並根據數據決定如何響應。通常在文件上傳的情況下,響應將只包含一個HTTP位置標題。

我假設您正在根據您的配置文件歷史記錄討論web上的MVC。在經典MVC中,由於在那裏使用的觀察者模式,視圖會知道模型層中的變化而不顯式檢查它。

雖然你很可能會有一些「上傳控制器」,它不應該直接與域對象或存儲抽象進行交互。相反,它只需要用戶的請求,從中提取數據並將其傳遞到需要的地方。

請記住,在web應用程序中,「用戶」是一個網絡瀏覽器,而不是與它一起工作的人。

+0

謝謝,我想我理解得更好的MVC。 –