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 ...
随机推荐
- js截取get参数乱码问题之解决
举个例子说一下: http://wwww.yctech.com/blog/post?id=1 像这样的话,通常通过如下代码直接截取不用做任何处理: function getQueryString(na ...
- java核心技术卷上学习笔记
9月5日 学习章节:第二章 Java程序设计环境 学习包括Java的安装.命令行工具.IDE.图形化开发环境等. 9月6日 学习章节:第三章 Java的基本程序设计结构 学习包括注释.数据类型.变量. ...
- 源码编译Redis Desktop Manager ---(转载)
精美文章转载: 版权声明:本文作者为「Kany.Wang」,本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议.转载请注明出处!原文链接:https://kany.me/20 ...
- Centos7下安装ORACLE 11g,弹窗不显示
Centos7下安装ORACLE 11gR2,弹窗不显示,安装界面显示为灰色. 解决方法:执行安装时带上一下参数 ./runInstaller -jreLoc /etc/alternatives/jr ...
- HTML+CSS编写五环居中案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Spark闭包与序列化
Spark的官方文档再三强调那些将要作用到RDD上的操作,不管它们是一个函数还是一段代码片段,它们都是“闭包”,Spark会把这个闭包分发到各个worker节点上去执行,这里涉及到了一个容易被忽视的问 ...
- centos 查看版本 及 升级
查看系统版本: cat /etc/redhat-release(/etc/centos-release)// 或者 rpm -q centos-release [root@56 ~]# cat /e ...
- fiddler抓包详解
image.png 前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书. 一.网页不安全 1.用fiddler ...
- Flask 上传下载文件
上传文件示例代码 #encoding:utf8 from werkzeug.utils import secure_filename from flask import Flask,render_te ...
- vue create xxx 报错
在创建项目的时候,无论是默认配置还是自定义的配置,都会出现如下报错: 不用说,看项目中也只有一个packgge.json文件,项目必然是没有创建成功. 查看淘宝镜像 npm config get re ...