麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

.net的WebForm模擬MVC進(jìn)行模型綁定,讓自己少操勞

2019-11-17 02:13:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
.net的WebForm模擬MVC進(jìn)行模型綁定,讓自己少操勞

用過(guò)MVC的兄弟們都知道,MVC有模型綁定表單提交的數(shù)據(jù)功能,那么我也想偷個(gè)懶也寫(xiě)個(gè)WebForm版的模型綁定。這里主要定義一個(gè)泛型方法,然后通過(guò)反射把表單上對(duì)應(yīng)屬性名字的值賦值到反射創(chuàng)建類(lèi)的屬性上。

有注意的地方:

1、定義的模型類(lèi)的屬性名要和表單name的名字相對(duì)應(yīng)

2、定義的泛型方法是通過(guò)var form = context.Request.Form; 表單 POST過(guò)來(lái)的數(shù)據(jù)

public class DataModel{    /// <summary>    /// 從表單提交的數(shù)據(jù)中綁定model模型的值    /// </summary>    /// <typeparam name="T"></typeparam>    /// <param name="entity"></param>    /// <returns></returns>    public static T ModelBing<T>(T entity)    {        object obj = Activator.CreateInstance(typeof(T));        Type type = entity.GetType();        PRopertyInfo[] proInfos = type.GetProperties();        Dictionary<string, PropertyInfo> dic = new System.Collections.Generic.Dictionary<string, PropertyInfo>();        for (int i = 0; i < proInfos.Length; i++)        {            dic.Add(proInfos[i].Name, proInfos[i]);        }        HttpContext context = HttpContext.Current;        var form = context.Request.Form;        string[] keys = form.AllKeys;        foreach (string key in keys)        {            if (dic.ContainsKey(key))            {                PropertyInfo pInfo = dic[key];                var proType = pInfo.PropertyType;                object value = null;//存儲(chǔ)轉(zhuǎn)換對(duì)應(yīng)類(lèi)型后的值                if (string.IsNullOrEmpty(form[key]))//當(dāng)post過(guò)來(lái)的值沒(méi)有的時(shí)候                {                    if (proType == typeof(string))  //判斷該屬性是否string類(lèi)型給空字符串,因?yàn)槲?a href="http://www.companysz.com/sql.asp">數(shù)據(jù)庫(kù)該字段不允許為null                    {                                 //這里我不對(duì)值類(lèi)型的數(shù)據(jù)進(jìn)行判斷了,因?yàn)橹殿?lèi)型會(huì)有默認(rèn)值                        pInfo.SetValue(obj, "", null);                    }                                                           continue;                }                try                {                    if (proType.IsEnum)//如果屬性是枚舉類(lèi)型,轉(zhuǎn)換枚舉類(lèi)型                    {                        value = Enum.ToObject(proType, form[key]);                    }                    else if (proType.IsGenericType && proType.Name.StartsWith("Nullable"))//泛型類(lèi)型                    {                        Type newproType = Nullable.GetUnderlyingType(proType);                        value = Convert.ChangeType(form[key], newproType);                    }                    else                    {                        value = Convert.ChangeType(form[key], proType);                    }                    pInfo.SetValue(obj, value, null);                }                catch (Exception ex)                {                    throw ex;//寫(xiě)入錯(cuò)誤日志                }            }        }        return (T)obj;    }}

前臺(tái)可以通過(guò)EasyUI框架進(jìn)行驗(yàn)證表單再提交到后臺(tái),這里就不再多說(shuō)了,大家明白如何使用這個(gè)方法就好,有不完善的地方希望大家指出!


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一二区电影 | 媚药按摩痉挛w中文字幕 | 亚洲一区成人在线 | 一级毛片在线观看免费 | 亚洲性生活视频 | 日韩一级免费 | 国产亚洲精品久久久久久大师 | 在线亚洲综合 | 99亚洲精品| 欧美性色黄大片www 操碰网 | 最新欧美精品一区二区三区 | 91久久久久久久 | 九草视频 | 欧美囗交 | 91av视频大全 | 日韩午夜一区二区三区 | h视频免费看 | 91 视频网站 | 神马福利网| 国产亚洲精品久久久久久久久 | 成人黄色短视频在线观看 | www亚洲免费 | 亚洲成人精品一区二区 | 91精品国产综合久久久动漫日韩 | 黄色aaa视频 | 99re66热这里只有精品8 | 免费一级a毛片在线播放视 日日草夜夜操 | 中韩毛片 | 国产精品片一区二区三区 | 失禁高潮抽搐喷水h | 国产精选久久久 | 日韩一级视频 | 日韩视频1 | 91福利免费观看 | 欧美日韩免费一区二区三区 | 亚洲小视频在线观看,com | 毛片中文字幕 | 久久蜜臀一区二区三区av | 日本高清视频网站www | 日本精品免费观看 | 国产羞羞视频免费在线观看 |