MVC中Model BLL层Model模型互转
MVC中Model BLL层Model模型互转
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MvcApplication1.Models
{
/// <summary>
/// 表现层实体集合
/// </summary>
public class UserCompanyViewModels
{
public UserViewModel User { set; get; }
public List<CompanyViewModel> Companys { set; get; }
public UserCompanyViewModels()
{
User = new UserViewModel();
Companys = new List<CompanyViewModel>();
}
/// <summary>
/// Bo To Vo
/// </summary>
/// <param name="user">业务层实体对象</param>
/// <param name="companys">业务层实体对象集合</param>
/// <returns>表现层实体</returns>
public UserCompanyViewModels ToVo(UserModel user, List<CompanyModel> companys)
{
UserCompanyViewModels models = new UserCompanyViewModels();
if (user != null)
{
models.User.UserID = user.UserID;
models.User.UserName = user.UserName;
}
if (companys != null && companys.Count > 0)
{
foreach (var item in companys)
{
CompanyViewModel company = new CompanyViewModel();
company.CompanyID = item.CompanyID;
company.CompanyName = item.CompanyName;
models.Companys.Add(company);
}
} return models;
}
}
/// <summary>
/// 表现层实体
/// </summary>
public class UserViewModel
{
public int UserID { set; get; }
public string UserName { set; get; }
}
/// <summary>
/// 表现层实体
/// </summary>
public class CompanyViewModel
{
public int CompanyID { set; get; }
public string CompanyName { set; get; }
}
/// <summary>
/// 业务层实体
/// </summary>
public class UserModel
{
public int UserID { set; get; }
public string UserName { set; get; }
public string UserGander { set; get; }
public string UserAddress { set; get; }
/// <summary>
/// Vo To Bo
/// </summary>
/// <param name="models">表现层实体对象</param>
/// <returns>业务层实体</returns>
public UserModel ToBo(UserCompanyViewModels models)
{
UserModel user = new UserModel();
if (models != null&&models.User!=null)
{
user.UserID = models.User.UserID;
user.UserName = models.User.UserName;
}
return user;
}
}
/// <summary>
/// 业务层实体
/// </summary>
public class CompanyModel
{
public int CompanyID { set; get; }
public string CompanyName { set; get; }
public string CompanyAddress { set; get; }
/// <summary>
/// Vo To Bo
/// </summary>
/// <param name="models">表现层实体对象</param>
/// <returns>业务层实体</returns>
public List<CompanyModel> ToBo(UserCompanyViewModels models)
{
List<CompanyModel> companys = new List<CompanyModel>();
if (models != null&&models.Companys!=null && models.Companys.Count > 0)
{
foreach (var item in models.Companys)
{
CompanyModel company = new CompanyModel();
company.CompanyID = item.CompanyID;
company.CompanyName = item.CompanyName;
companys.Add(company);
}
}
return companys;
}
}
}
在这个模型中具备了MVC中Model和BLL层model的转换方法,可能有有人要问为什么,我想说的是如果加入了这种模型转换方法,在同一controller不同action要使用的时候,就可以轻松转换页面视图模型和逻辑层模型的转换,不用重复写代码,简单的封装思想。
二. 在Controller中使用,如下:
[HttpPost]
public ActionResult Create(FormCollection collection,UserCompanyViewModels models)
{
//如果控件有ID的话,可以通过控件Names属性来取值,如
var a = collection["User.UserID"];
try
{
// TODO: Add insert logic here
UserModel user = new UserModel();
user = user.ToBo(models);
//然后调用BLL层执行数据库User表操作Save,Update等方法
CompanyModel company = new CompanyModel();
List<CompanyModel> companys = company.ToBo(models);
//然后调用BLL层数据库Company表操作Save,Update等方法
return View("Create", models);
}
catch
{
return View("Create");
}
}
这里可以看到,因为View视图可能使用到的是一个复杂的model,这个model是业务层几个model的组合,甚至是集合List类型,所以在这里可以轻松转换。
MVC中Model BLL层Model模型互转的更多相关文章
- mvc中动态给一个Model类的属性设置验证
原文:mvc中动态给一个Model类的属性设置验证 在mvc中有自带的验证机制,比如如果某个字段的类型是数字或者日期,那么用户在输入汉字或者英文字符时,那么编译器会自动验证并提示用户格式不正确,不过这 ...
- MVC中的七层架构
工厂模式的七层架构 1.创建Model,实现业务实体. 2.创建IDAL,实现接口. 3.创建DAL,实现接口里的方法. 4.创建DBUtility,数据库操作类5.创建DALFactory,抽象工程 ...
- Spring.NET在MVC中实现业务层和UI层解耦
最近在项目中用到了Spring.NET,使用它来实现业务层和UI层解耦.使用过程中难免遇到问题,现把遇到的一些问题整理出来,留作笔记. 使用的开发工具是vs2017,.netframework 4.6 ...
- 将MVC中的Controllers、Model和View分别放到单独的项目中
Model: 新建-项目-Windows-类库 MVCTest.Model Controller:新建-项目-Windows-控制台应用程序 MVCTest.Bussiness Views:新建-项目 ...
- MVC中javascript直接调用Model
最近做一个统计页面, Model从后台已经获取了数据集合,想直接在前台展示,而这个展示是需要用js生成图表的. 控制器部分代码: public ActionResult Index() { var m ...
- 浅谈MVC中的service层(转)
概述 mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层 ...
- 【原创】有关Silverlight中自动生成的类中 没有WCF层edmx模型新加入的对象 原因分析。
前端页面层: 编译老是不通过,报如下如所示错误: -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类. 结果整理: 1.尽管在 edmx 模 ...
- 关于Asp.Net MVC 中 UpdateModel 的未能更新***模型的 解决方案!
解决方案参考: http://blog.csdn.net/hudaijun/article/details/7293129 想法: 其实,不用UpdateModel,虽然笨些,但不会出什么古怪问题.当 ...
- MVC中如何跳过对模型中某个属性的验证
[HttpPost] public ActionResult Create(Users user) { ModelState.Remove(“Password”); //加上这句就行了 if (Mod ...
随机推荐
- mpvue中按需引入echarts
大家都知道小程序文件大小不能超过2M, 在项目中引入echarts后,文件大小远远超出2M了.因为echarts文件默认是包含所有图表代码的,所以文件体积会比较大.解决办法如下: 安装 首先我们先安装 ...
- JavaScript的filter方法
var ages = [32, 33, 16, 40]; function checkAdult(age) { return age >= 18; } function myFunction() ...
- mybatis三个执行器的差别
myBatis官方对参数"defaultExecutorType"是这样说明的: 有这样三种执行器, SIMPLE是普通的执行器:REUSE执行器会重用预处理语句(prepared ...
- swap 释放
#swap 释放 -------------------------------- swapoff -a wwapon -a
- CefSharp中文帮助文档
https://github.com/cefsharp/CefSharp/wiki/CefSharp%E4%B8%AD%E6%96%87%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A ...
- Ubuntu 16.04 catkin_make 常见操作
参考博客:https://answers.ros.org/question/54178/how-to-build-just-one-package-using-catkin_make/ 1. catk ...
- 动手制作 java版本切换 多版本JDK安装 windows JDK版本 切换
[参考]windows下JDK版本之间的切换 1.下载各版本安装包,指定安装位置顺序安装 2.删除注册表,文件和环境变量 文件: C:\Windows\System32 下java相关文件如 jav ...
- postman 用环境变量Environment实现多服务器版本
现存问题 在测试API期间,往往存在多种环境,对应IP地址(或域名也不同) 比如: Prod: http://116.62.25.57/ucows 用于开发完成发布到生产环境 Dev: http:// ...
- jzy3D安装到弃坑
jzy3D从入门到弃坑 觉得有用的话,欢迎一起讨论相互学习~Follow Me 安装 http://www.jzy3d.org/ 官网 选择DL 选择0.9版使用,而不要使用其他版本 具体原因 高版本 ...
- php异常处理小总结
2019年8月23日10:56:31 php很多开发不习惯使用异常处理,因为web开发,重在于快速开发,易用性,高性能,不强调程序健壮性 php的异常使用其实不是太完善,易用性也差点,当然这个对比其他 ...