Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ViewModel Do';s和Don';ts_Asp.net Mvc 3_C# 4.0_Domain Driven Design - Fatal编程技术网

Asp.net mvc 3 ViewModel Do';s和Don';ts

Asp.net mvc 3 ViewModel Do';s和Don';ts,asp.net-mvc-3,c#-4.0,domain-driven-design,Asp.net Mvc 3,C# 4.0,Domain Driven Design,我现在正处于构建MVC应用程序的有趣阶段。在过去的3周里,我一直在研究体系结构,尤其是洋葱,并学习IOC/DI等 所以我的问题是: 实现ViewModels的最佳方法是什么?到目前为止,我已经看到了一些糟糕的例子。我建议回顾这篇文章,其中概述了处理视图模型的不同“策略”。 我可以为视图模型提供的一些建议是: 直接基于您的视图&用户界面需要什么 更喜欢为单独的页面创建自定义视图模型,而不是泛化它们以便在不同的视图中重复使用 保持它们的简单和平坦,不要过分追求继承等 如果您是从数据库模型进行映射

我现在正处于构建MVC应用程序的有趣阶段。在过去的3周里,我一直在研究体系结构,尤其是洋葱,并学习IOC/DI等

所以我的问题是:
实现ViewModels的最佳方法是什么?到目前为止,我已经看到了一些糟糕的例子。

我建议回顾这篇文章,其中概述了处理视图模型的不同“策略”。

我可以为视图模型提供的一些建议是:

  • 直接基于您的视图&用户界面需要什么
  • 更喜欢为单独的页面创建自定义视图模型,而不是泛化它们以便在不同的视图中重复使用
  • 保持它们的简单和平坦,不要过分追求继承等
  • 如果您是从数据库模型进行映射,请采用现有方法在模型和视图模型之间进行映射,例如
  • 考虑在某些情况下使用,它更灵活,摩擦更小

可怕的例子?比如?你能把它们寄出去吗?链接到他们?哈哈。不不过,我相信在谷歌上花5分钟就可以了。我遇到的一个困扰我的问题是有人将ViewModel发送到ServiceLayer,从ViewModel中获取数据,然后更新数据库。所以现在ServiceLayer依赖于特定的ViewModel。。。对于服务层,它可以用于专门缓存视图模型以提高性能的情况下,请参见CQR(当心你的头可能会爆炸)酷,但如果你要走这条路,至少要注入一个接口。太棒了,谢谢你。我将把你的答案添加到我的“ViewModel”列表中,列出我的博客的“应该做的”和“不应该做的”。@Code噢sweet,如果你不介意的话,请评论一下链接。虽然我很荣幸你接受了我会等一等的答案,但可能还有很多其他反馈;)