日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

MVC中Model BLL层Model模型互转

發(fā)布時(shí)間:2024/7/19 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。