C# 模型视图控制器

Posted

技术标签:

【中文标题】C# 模型视图控制器【英文标题】:C# model view controller 【发布时间】:2009-03-03 18:42:02 【问题描述】:

所以我正在以模型-视图-控制器模式创建 C#/Winforms 应用程序。我的视图控制器需要实例化多组对象。对象组是模型的元素和视图的元素。例如一个文本框和该文本框后面的模型。

我想知道最好的方法是将所有东西放在某种集合中并用钥匙将它们绑在一起?

【问题讨论】:

【参考方案1】:

在我构建的 WinForm MVC 应用程序中,我通常不允许控制器实例化任何东西(我尝试将“new”关键字排除在我的控制器之外)。

如果我需要一个对象,我会向服务请求它,并且在内部该服务将从数据源(存储库等)中获取该对象,或者在新对象的情况下它可能会使用某种类型工厂给我一个新对象(任何必要的预填充属性已经设置为默认值,运行规则等)。

我喜欢思考这类问题的方式是:如果我没有用于视图的 GUI,而是有一个用于我的观点?创建/添加/删除/更新模型的逻辑应该在您的域中的某个地方,而不是在控制器中。然后控制器就成为模型和视图之间的中介。视图变成了一种 I/O 机制,它只是一个更漂亮的命令行界面版本。

希望这是有道理的。

【讨论】:

【参考方案2】:

您是否考虑过使用 WPF 代替 WinForms?它有一个更好的类似 MVC 的模型和更强大的内置数据绑定。它可能会解决您的问题并帮助您使用更现代的技术进行构建。

【讨论】:

我愿意,但目前我被 Studio 2005 和 WinForms 困住了。我想这个问题是一个非常通用的 MVC 问题,但我想知道 C# 最佳实践。【参考方案3】:

也许你应该设计你的模型来满足视图的需要?那么控制器将只有一个模型传递给视图。

【讨论】:

以上是关于C# 模型视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC - 使用 C# 将引用不同程序集的模型从控制器传递到视图

使用 jQuery 为 c# 构建视图模型

带有模型和视图包的视图中的 C# MVC foreach 循环

在 MVC3、C# 中使用视图模型中的新数据更新视图

将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器

通用视图模型控制 (MVC)