MVC中Model BLL层Model模型互转
生活随笔
收集整理的這篇文章主要介紹了
MVC中Model BLL层Model模型互转
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MVC中Model BLL層Model模型互轉
一. 模型通常可以做2種:充血模型和失血模型,一般做法是模型就是模型,不具備方法來操作,只具有屬性,這種叫做失血模型(可能不準確);具備對模型一定的簡單操作方法,不只是有屬性的模型叫做充血模型,如下: 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 hereUserModel 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類型,所以在這里可以輕松轉換。
轉載于:https://www.cnblogs.com/weiweithe/p/4305781.html
總結
以上是生活随笔為你收集整理的MVC中Model BLL层Model模型互转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剖析云平台中的“共享型数据库”
- 下一篇: linux处置服务Iptables