做影视网站用的封面,互联网营销培训的课程学费,云霄县建设局网站投诉,建设银行官方网站登录电脑版MVC中Model BLL层Model模型互转 一. 模型通常可以做2种#xff1a;充血模型和失血模型#xff0c;一般做法是模型就是模型#xff0c;不具备方法来操作#xff0c;只具有属性#xff0c;这种叫做失血模型(可能不准确)#xff1b;具备对模型一定的简单操作方法#xff0c…MVC中Model BLL层Model模型互转 一. 模型通常可以做2种充血模型和失血模型一般做法是模型就是模型不具备方法来操作只具有属性这种叫做失血模型(可能不准确)具备对模型一定的简单操作方法不只是有属性的模型叫做充血模型如下 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace MvcApplication1.Models
{/// summary/// 表现层实体集合/// /summarypublic class UserCompanyViewModels{public UserViewModel User { set; get; }public ListCompanyViewModel Companys { set; get; }public UserCompanyViewModels(){User new UserViewModel();Companys new ListCompanyViewModel();}/// summary/// Bo To Vo/// /summary/// param nameuser业务层实体对象/param/// param namecompanys业务层实体对象集合/param/// returns表现层实体/returnspublic UserCompanyViewModels ToVo(UserModel user, ListCompanyModel 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/// 表现层实体/// /summarypublic class UserViewModel{public int UserID { set; get; }public string UserName { set; get; }}/// summary/// 表现层实体/// /summarypublic class CompanyViewModel{public int CompanyID { set; get; }public string CompanyName { set; get; }}/// summary/// 业务层实体/// /summarypublic 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 namemodels表现层实体对象/param/// returns业务层实体/returnspublic UserModel ToBo(UserCompanyViewModels models){UserModel user new UserModel();if (models ! nullmodels.User!null){user.UserID models.User.UserID;user.UserName models.User.UserName;}return user;}}/// summary/// 业务层实体/// /summarypublic class CompanyModel{public int CompanyID { set; get; }public string CompanyName { set; get; }public string CompanyAddress { set; get; }/// summary/// Vo To Bo/// /summary/// param namemodels表现层实体对象/param/// returns业务层实体/returnspublic ListCompanyModel ToBo(UserCompanyViewModels models){ListCompanyModel companys new ListCompanyModel();if (models ! nullmodels.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 hereUserModel user new UserModel();user user.ToBo(models); //然后调用BLL层执行数据库User表操作Save,Update等方法CompanyModel company new CompanyModel();ListCompanyModel companys company.ToBo(models);//然后调用BLL层数据库Company表操作Save,Update等方法return View(Create, models);}catch{return View(Create);}}这里可以看到因为View视图可能使用到的是一个复杂的model这个model是业务层几个model的组合甚至是集合List类型所以在这里可以轻松转换。 转载于:https://www.cnblogs.com/weiweithe/p/4305781.html