我在想如何正确地创建视图模型。
比如,我有一个编辑视图,其中包含一些文本框和下拉列表。
我应该将下拉列表分成一个新的视图模型还是在编辑视图中使用一个带有下拉列表的列表视图模型?
或者一般来说,我应该将特殊输入字段分别放在不同的视图模型中吗?
何时一个视图应该有多个视图模型,何时不应该?
我在想如何正确地创建视图模型。
比如,我有一个编辑视图,其中包含一些文本框和下拉列表。
我应该将下拉列表分成一个新的视图模型还是在编辑视图中使用一个带有下拉列表的列表视图模型?
或者一般来说,我应该将特殊输入字段分别放在不同的视图模型中吗?
何时一个视图应该有多个视图模型,何时不应该?
我倾向于每个视图/局部视图使用一个视图模型的方法。在我看来,如果你认为视图模型的单一目的应该是建模视图,那么这是最好的方法。这种范例还支持使用强类型视图,因此为您的视图模型绑定提供编译时错误检查,并获得智能感知的附加好处。在希望重用某些逻辑的情况下,我发现将视图重构为局部视图并为这些局部视图提供自己的视图模型通常可以满足要求。需要强调的是,您的视图模型中不应存在任何领域逻辑,因为它真正属于领域模型。
如果你想要可重用性,你应该将下拉列表分离到新的视图模型中。
如果您想要存储类型视图使用的数据,则通常会使用ViewModel模式。对于UI特定逻辑和详细信息,ViewHelper模式更为适合。
关于ViewModel的一些讨论,请参阅本文。http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/