用過(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è)方法就好,有不完善的地方希望大家指出!
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注