Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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
C# Asp.net在何处构建viewmodels_C#_Asp.net Mvc 3 - Fatal编程技术网

C# Asp.net在何处构建viewmodels

C# Asp.net在何处构建viewmodels,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我正在从头开始构建一个mvc应用程序。目前,我非常怀疑从域实体到视图模型的映射应该放在哪里。我有以下的项目布局 MVC应用程序 Bl层(每个域,订单1个,客户1个等) 存储库层。大部分是每张桌子 例如,现在我需要构建一个网格。调用控制器以获取屏幕上的网格,例如在索引页面上。然后索引页调用BL层,该层最终调用存储库来访问数据库中的数据。现在我的问题是,我应该在哪里将域属性映射到viewmodels?我可以在控制器或BL层中执行此操作。什么是赞成者和反对者?您应该将映射器逻辑保持在BL的单独类中

我正在从头开始构建一个mvc应用程序。目前,我非常怀疑从域实体到视图模型的映射应该放在哪里。我有以下的项目布局

  • MVC应用程序
  • Bl层(每个域,订单1个,客户1个等)
  • 存储库层。大部分是每张桌子

例如,现在我需要构建一个网格。调用控制器以获取屏幕上的网格,例如在索引页面上。然后索引页调用BL层,该层最终调用存储库来访问数据库中的数据。现在我的问题是,我应该在哪里将域属性映射到viewmodels?我可以在控制器或BL层中执行此操作。什么是赞成者和反对者?

您应该将映射器逻辑保持在BL的单独类中,而不是控制器中。这主要是因为你的控制器不负责映射。应该有另一个类来处理此映射职责。我想这就是原则所说的


最好看看一些面向对象的设计原则。

您的意思是在控制器中调用如下内容:List cityGridModel=CityMapper.Map(cityService.GetCities());或者你会做一些类似列表的事情吗?第二个更好,即
List