如果你遵循官方型号胶文档,发现这里提供的快速入门指南: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'对象中。 –