Model与ViewModel完全相同时该怎么办?

时间:2013-05-28 06:56:06

标签: c# asp.net-mvc entity-framework entity-framework-4 asp.net-mvc-viewmodel

我想知道什么是最佳做法。我被告知总是创建ViewModels并且从不使用核心Model类将数据传递给Views。 那讲得通。 让我把事情分开。但是什么是Model与ViewModel完全相同。我应该重新创建另一个类还是只使用它。

我觉得我应该重新创造。只是想知道专家说的话。

3 个答案:

答案 0 :(得分:5)

您绝对应该创建一个单独的视图模型,即使它与您的域实体完全相同。视图模型和域实体应该是完全独立的,即您应该能够更改一个而不需要知道或关心更改。您的视图模型应代表您的视图,您的域实体应该......嗯...代表您的域实体。它们现在可能完全相同,但如果有任何变化,一个变化不应影响另一个。

如果您的域模型突然更改并且现在具有与您的视图模型不再相关的字段,该怎么办?如果他们没有分开,你就会遇到问题。或者,更糟糕(并且可能更有可能),如果您的视图模型突然需要来自完全不同的实体的更多信息,该怎么办?您是否打算使用这些完全不相关的信息打破域模型中的类封装,只是为了让它在您的视图中可访问?

保持解决方案的解耦和灵活性。使用视图模型。

答案 1 :(得分:4)

顺便说一句,我建议创建一个ModelView。所以在这个特殊情况下它将是相同的,它将像UI和模型之间的“桥梁”一样工作,数据传输。

但这对于可扩展性是有好处的,因为您很可能想要添加特定于视图模型的UI,因此它会越来越多地从模型本身推迟。

所以一般建议:顺便创建它,即使现在它们是相同的,因为它可以帮助你在之后 之后进行扩展。

答案 2 :(得分:2)

  

但是什么是Model与ViewModel完全相同。我应该重新创作吗?   另一个班级或只是使用它。

如果完全相同,您当然不需要视图模型。但这是一种非常罕见的情况。