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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC中的模型装配 封装方法 非常好用

發布時間:2023/12/10 asp.net 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC中的模型装配 封装方法 非常好用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面說一下

我們知道在asp.net?mvc中?視圖可以綁定一個實體模型

然后我們三層架構中也有一個model模型

但是這兩個很多時候卻是不一樣的對象來的

就拿微軟的官方mvc例子來說明

??? 微軟的視圖實體中?有loginmodel?有registermodel?等等?這些視圖模型?都只是占用戶實體的某幾個字段而已,甚至有一些視圖模型 的字段是來自多個表的,那么很多人可能用最原始的賦值方法,比如用戶注冊后 拿到post過來后的實體,這個時候再重新new一個三層的model實體,然后在一個個的字段賦值過來,

?比如:

?? [httppost]

?? public ActionResult Register(LoginModel model)

? {

???????? UserModel userModel = new UserModel();

??????? userModel.Name = model.Name;

??????? userModel.Email = model.Email;

??????? userModel.Password = model.Password;

??????? ......................................

??????? UserDao.Add(userModel);

?? }

這樣非常累贅,簡直就是體力活。

?? 下面我總結了兩個方法,這兩個方法可以自動地根據實體的屬性名稱自動的賦值過來,第一個是將某個實體的屬性值之間賦值到一個新的實體中,如果新的實體中含有自己的屬性,那么就用初始值,第二個是將一個A的實體賦值到B中

那么這個時候?我們可以用下面兩個方法來轉換?自動賦值兩個對象的

protected T AssembleInfo<T, T2>(T2 model)
??????? {
??????????? PropertyInfo[] propertyInfoList = GetPropertyInfoArray(typeof(T));
??????????? PropertyInfo[] propertyInfoList2 = GetPropertyInfoArray(typeof(T2));
??????????? object obj = Activator.CreateInstance(typeof(T), null);//創建指定類型實例
??????????? for (int i = 0; i < propertyInfoList.Length; i++)
??????????? {
??????????????? for (int J = 0; J < propertyInfoList2.Length; J++)
??????????????? {
??????????????????? if (propertyInfoList2[J].Name.ToLower() == propertyInfoList[i].Name.ToLower())
??????????????????? {
??????????????????????? propertyInfoList[i].SetValue(obj, propertyInfoList2[J].GetValue(model,null), null);//給對象賦值
??????????????????? }
??????????????? }
??????????? }
??????????? return (T)obj;
??????? }


??????? /// <summary>
??????? /// 反射獲取類的屬性
??????? /// </summary>
??????? /// <param name="type"></param>
??????? /// <returns></returns>
??????? protected PropertyInfo[] GetPropertyInfoArray(Type type)
??????? {
??????????? PropertyInfo[] props = null;
??????????? try
??????????? {
??????????????? object obj = Activator.CreateInstance(type);
??????????????? props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
??????????? }
??????????? catch (Exception ex)
??????????? {

??????????? }
??????????? return props;
??????? }

?

---------------------使用的時候?只需要

ModelInfo info = AssembleInfo<ModelInfo, ModelModel>(model);

就可以自動根據屬性名稱自動將modelmodel這個實體的值自動賦值到modelinfo

?

感謝你的閱讀,希望對你有幫助 謝謝

轉載于:https://www.cnblogs.com/maijin/p/4768684.html

總結

以上是生活随笔為你收集整理的ASP.NET MVC中的模型装配 封装方法 非常好用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。