没有mvc依赖的模型上的MVC数据注释?

use*_*662 2 c# asp.net-mvc class

假设我有一个包含所有模型类的项目,其中包含一个包含MVC 4 Web应用程序的单独项目(服务,存储库层也是如此).

如果我想为我的模型属性使用MVC特定数据注释,我如何在不依赖MVC的情况下执行此操作?

任何引用该模型的非MVC项目也需要MVC引用.我希望这些仅在MVC使用模型时添加,而不是所有内容.

最初我在考虑部分课程,但我知道这些不能用于跨组装.

制作克隆类并从模型类之外的原件继承可能不起作用.它需要代码引用这些子类而不是原始类.

我更喜欢以更不引人注目的方式将属性附加到模型中.

Dar*_*rov 6

如果我想为我的模型属性使用MVC特定数据注释,我如何在不依赖MVC的情况下执行此操作?

通过使用视图模型.视图模型是您在MVC应用程序中设计和定义的类,以及传递给视图的类.您永远不应将模型传递给视图.您的控制器操作可以在服务层中查询域模型,然后将这些域模型映射到视图模型并将这些视图模型传递给视图.另一方面,[HttpPost]控制器操作应将视图模型与相应的数据注释作为参数,将这些视图模型映射到其对应的域模型,并将域模型传递到服务层.

  • ViewModel绝对不应该从模型继承.它们仅通过允许视图所需的操作(和属性),充当模型和视图之间的分离.您可以在视图模型中引用模型,但不公开公开模型或模拟模型的一部分,然后可以手动或借助外部库来缓解疼痛. (4认同)