如果你遵循官方型號膠文檔,發現這裏提供的快速入門指南:Coldfusion中的Model-Glue模型與其他MVC框架中的模型相同嗎?
它會看起來像「模型」是執行的應用程序操作的類。在這個例子中,他們創建了一個Translator
類,將一個短語翻譯成Pig Latin。從這裏很容易推斷出程序邏輯也應該是「模型」,比如數據庫操作類和HTML助手。
不過,我最近收到一個答案的問題,我在這裏問關於MVC:
在其中一個答案,有人提到了「模式」中的MVC應該是一個對象,控制器會填充數據,然後將數據傳遞給視圖,視圖將其用作強類型對象來呈現數據。這意味着,對於上面提供的模型膠水例如,應該已經是一個翻譯控制器,一個翻譯視圖,一個PigLatinTranslator
類和Translation
模型,看起來像這樣:
component Translation
{
var TranslatedPhrase = "";
}
該控制器將使用它像這樣:
component TranslatorController
{
public function Translate(string phrase)
{
var translator = new PigLatinTranslator();
var translation = new Translation();
translation.TranslatedPhrase = translator.Translate(phrase);
event.setValue("translation", translation);
}
}
和視圖將呈現這樣的:
<p>Your translated phrase was: #event.getValue("translation").TranslatedPhrase#</p>
在這種情況下,PigLatinTranslator
僅僅是一個駐留在某個地方的類,不能被視爲模型,控制器或視圖。
我的問題是,ColdFusion Model-Glue的模型與MVC模型不同嗎?或者,他們提供的快速入門指南是MVC的一個不好的例子,上面列出的代碼是正確的做法?還是我完全偏離了這一切?
我認爲他的意思是「強類型」是視圖可能期望一個用戶對象,所以沒有其他對象會工作。如果視圖期望用戶並收到一輛車,那麼它很可能會拋出錯誤。從技術上講,如果任何其他對象具有完成視圖所需的所有屬性和方法所需的任何其他對象,並且不會拋出錯誤,所以我認爲它仍然不是真正強類型的。但是,我想我可以看到OP的來源。 –
對不起 - 是的 - 這是真的,我在那裏糟糕的表達自己。我甚至沒有評論正確的事情,反思(我處於太多事情的中間,失去了我的想法)!OP指出的鏈接是討論特定於C#/ MS的MVC系統;關於強類型視圖數據的考慮是特定於此的,因此與MG無關。對不起,我沒有注意到混亂。 –
是的,我在這裏掙扎的問題是,與ASP.NET MVC不同,ColdFusion不是強類型的。結果,視圖使用魔術字符串將它需要的變量從'event'對象中拉出。我的問題是,該視圖現在需要知道控制器將哪些變量放入'event'對象中,並且它好像打破了我所關心的問題。我認爲這是不可避免的,該視圖必須至少使用魔術字符串拉出某些東西,但我寧願它是一個具有定義屬性的CFC,而不是將數組和結構放入'event'對象中。 –