热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c#视图模型放置在N层ASP.NETMVC应用程序中

我已经读过this,对此很纳闷.我的应用程序包含4层Web项目UIBLLDAL(包含EF)实体层到目前为止,我已经将VM放置在UI层中,并且它是不同类的组合.像这样的东西p

我已经读过this,对此很纳闷.

我的应用程序包含4层

> Web项目/ UI
> BLL
> DAL(包含EF)
>实体层

到目前为止,我已经将VM放置在UI层中,并且它是不同类的组合.像这样的东西

public class CompanyVMIndex
{
public CompanyVM Company { get; set; }
public BillingAddressVM BillingAddress { get; set; }
public List ShippingAddress { get; set; }
public List CompanyContact { get; set; }
}

现在让我感到困惑的是,如何将这些数据从UI发送到BLL,然后再发送DAL.我已经阅读过自动映射器,但是它可以处理这种情况,如果可以,那么如何处理?
到目前为止,我已经决定将VM移到实体层,该实体层将连接到所有三个层,以便我可以在同一层中发送和接收数据,
还有其他好主意吗?

这就是我将数据从UI传递到BLL的方式

public ActionResult Create(CompanyVMIndex companyVM)
{
if (ModelState.IsValid)
{
//Calling BLL here
BLLFunction(companyVM)
}
return View("Index");
}

然后在BLL中使用Automapper在DAL中进行类似操作

public int BLLfunction(CompanyVMIndex CompanyVM)
{
}

现在,我如何通过BLL传递数据没有在Web UI中定义VM的CompanyVMIndex的定义

解决方法:

如果您想成为“纯”的人,那么BLL或其他任何层都不会看到ViewModel(或者,通常是发送到视图的任何模型).它将仅用于在控制器和视图之间进行通信.

当需要从BLL检索数据或将数据发送回BLL时,将使用其他类.数据将在ViewModel类之间来回复制.

这样,ViewModel精确地包含了控制器与视图进行通信所需要的内容,以及视图向回传递给控制器​​所需要的视图. BLL可以与业务逻辑有关,并且可以使用与任何ViewModel不完全对应的类.

例如,ViewModel可能包含有关客户及其公司的信息,以及有关客户在过去3个月内订购的产品的信息.它还可能包含用于在视图中创建用户界面元素的其他数据:例如,运输方法列表.这些数据几乎可以肯定来自几种不同的BLL类和方法.该数据的形状面向视图和控制器之间的通信. BLL类面向业务逻辑,也可能面向数据库.


推荐阅读
author-avatar
邹昕明
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有