MVC中Model BLL层Model模型互转
生活随笔
收集整理的這篇文章主要介紹了
MVC中Model BLL层Model模型互转
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MVC中Model BLL層Model模型互轉(zhuǎn)
一. 模型通常可以做2種:充血模型和失血模型,一般做法是模型就是模型,不具備方法來(lái)操作,只具有屬性,這種叫做失血模型(可能不準(zhǔn)確);具備對(duì)模型一定的簡(jiǎn)單操作方法,不只是有屬性的模型叫做充血模型,如下: using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace MvcApplication1.Models {/// <summary>/// 表現(xiàn)層實(shí)體集合/// </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">業(yè)務(wù)層實(shí)體對(duì)象</param>/// <param name="companys">業(yè)務(wù)層實(shí)體對(duì)象集合</param>/// <returns>表現(xiàn)層實(shí)體</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>/// 表現(xiàn)層實(shí)體/// </summary>public class UserViewModel{public int UserID { set; get; }public string UserName { set; get; }}/// <summary>/// 表現(xiàn)層實(shí)體/// </summary>public class CompanyViewModel{public int CompanyID { set; get; }public string CompanyName { set; get; }}/// <summary>/// 業(yè)務(wù)層實(shí)體/// </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">表現(xiàn)層實(shí)體對(duì)象</param>/// <returns>業(yè)務(wù)層實(shí)體</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>/// 業(yè)務(wù)層實(shí)體/// </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">表現(xiàn)層實(shí)體對(duì)象</param>/// <returns>業(yè)務(wù)層實(shí)體</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;}} }在這個(gè)模型中具備了MVC中Model和BLL層model的轉(zhuǎn)換方法,可能有有人要問(wèn)為什么,我想說(shuō)的是如果加入了這種模型轉(zhuǎn)換方法,在同一controller不同action要使用的時(shí)候,就可以輕松轉(zhuǎn)換頁(yè)面視圖模型和邏輯層模型的轉(zhuǎn)換,不用重復(fù)寫(xiě)代碼,簡(jiǎn)單的封裝思想。
二. 在Controller中使用,如下:
[HttpPost]public ActionResult Create(FormCollection collection,UserCompanyViewModels models){//如果控件有ID的話,可以通過(guò)控件Names屬性來(lái)取值,如var a = collection["User.UserID"];try{// TODO: Add insert logic hereUserModel user = new UserModel();user = user.ToBo(models); //然后調(diào)用BLL層執(zhí)行數(shù)據(jù)庫(kù)User表操作Save,Update等方法CompanyModel company = new CompanyModel();List<CompanyModel> companys = company.ToBo(models);//然后調(diào)用BLL層數(shù)據(jù)庫(kù)Company表操作Save,Update等方法return View("Create", models);}catch{return View("Create");}}這里可以看到,因?yàn)閂iew視圖可能使用到的是一個(gè)復(fù)雜的model,這個(gè)model是業(yè)務(wù)層幾個(gè)model的組合,甚至是集合List類(lèi)型,所以在這里可以輕松轉(zhuǎn)換。
轉(zhuǎn)載于:https://www.cnblogs.com/weiweithe/p/4305781.html
總結(jié)
以上是生活随笔為你收集整理的MVC中Model BLL层Model模型互转的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 剖析云平台中的“共享型数据库”
- 下一篇: C++ STL简介(转)