1. 程式人生 > 其它 >C# 控制元件和實體相互對映

C# 控制元件和實體相互對映

  1  public sealed class WebControlsHelper
  2     {
  3         #region "控制元件賦值"
  4         /// <summary>
  5         /// 設定頁面控制元件的值
  6         /// </summary>
  7         /// <param name="page"></param>
  8         /// <param name="model"></param>
  9         public static void SetWebControls<T>(Control page, T model) where
T : class, new() 10 { 11 SetWebControls(page, GetModelToHashtable(model)); 12 } 13 /// <summary> 14 /// 實體類Model轉Hashtable(反射) 15 /// </summary> 16 public static Hashtable GetModelToHashtable<T>(T model) 17 { 18 Hashtable ht = new
Hashtable(); 19 PropertyInfo[] properties = model.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public); 20 foreach (PropertyInfo item in properties) 21 { 22 string key = item.Name; 23 ht[key] = item.GetValue(model, null
); 24 } 25 return ht; 26 } 27 /// <summary> 28 /// 設定頁面控制元件的值 29 /// </summary> 30 /// <param name="page"></param> 31 /// <param name="ht"></param> 32 public static void SetWebControls(Control page, Hashtable ht) 33 { 34 if (ht.Count != 0) 35 { 36 int size = ht.Keys.Count; 37 foreach (string key in ht.Keys) 38 { 39 object val = ht[key]; 40 if (val != null) 41 { 42 Control control = page.FindControl(key); 43 Control hiddenCtr = page.FindControl("h" + key); 44 //var s = control.NamingContainer; 45 46 #region hidden input 47 if (hiddenCtr != null) 48 { 49 HtmlInputHidden hInput = (HtmlInputHidden)hiddenCtr; 50 if (hInput != null) 51 { 52 hInput.Value = val.ToString().Trim(); 53 } 54 } 55 #endregion 56 57 #region normal control 58 if (control == null) continue; 59 if (control is HtmlGenericControl) 60 { 61 HtmlGenericControl txt = (HtmlGenericControl)control; 62 txt.InnerHtml = val.ToString().Trim(); 63 } 64 if (control is HtmlInputText) 65 { 66 HtmlInputText txt = (HtmlInputText)control; 67 txt.Value = val.ToString().Trim(); 68 } 69 if (control is TextBox) 70 { 71 TextBox txt = (TextBox)control; 72 txt.Text = val.ToString().Trim(); 73 } 74 if (control is HtmlSelect) 75 { 76 HtmlSelect txt = (HtmlSelect)control; 77 78 if (val.ToString().Trim().ToUpper() == "TRUE" 79 || val.ToString().Trim().ToUpper() == "FALSE") 80 { 81 txt.Value = ((val.ToString().Trim().ToUpper() == "TRUE") ? "1" : "0"); 82 } 83 else 84 { 85 txt.Value = val.ToString().Trim(); 86 } 87 } 88 if (control is HtmlInputHidden) 89 { 90 HtmlInputHidden txt = (HtmlInputHidden)control; 91 txt.Value = val.ToString().Trim(); 92 } 93 if (control is HtmlInputPassword) 94 { 95 HtmlInputPassword txt = (HtmlInputPassword)control; 96 txt.Value = val.ToString().Trim(); 97 } 98 if (control is Label) 99 { 100 Label txt = (Label)control; 101 txt.Text = val.ToString().Trim(); 102 } 103 if (control is HtmlInputCheckBox) 104 { 105 HtmlInputCheckBox chk = (HtmlInputCheckBox)control; 106 chk.Checked = Convert.ToInt32(val) == 1 ? true : false; 107 } 108 if (control is HtmlTextArea) 109 { 110 HtmlTextArea area = (HtmlTextArea)control; 111 area.Value = val.ToString().Trim(); 112 } 113 if (control is DropDownList) 114 { 115 DropDownList drp = (DropDownList)control; 116 drp.SelectedValue = val.ToString().Trim(); 117 } 118 #endregion 119 } 120 } 121 } 122 } 123 #endregion 124 #region "控制元件獲值" 125 /// <summary> 126 /// 獲取伺服器控制元件值 127 /// </summary> 128 /// <param name="page"></param> 129 /// <returns></returns> 130 public static Hashtable GetWebControls(Control page) 131 { 132 Hashtable ht = new Hashtable(); 133 int size = HttpContext.Current.Request.Params.Count; 134 for (int i = 0; i < size; i++) 135 { 136 string id = HttpContext.Current.Request.Params.GetKey(i); 137 Control control = page.FindControl(id); 138 if (control == null) continue; 139 control = page.FindControl(id); 140 if (control is HtmlInputText) 141 { 142 HtmlInputText txt = (HtmlInputText)control; 143 ht[txt.ID] = txt.Value.Trim(); 144 } 145 if (control is HtmlSelect) 146 { 147 HtmlSelect txt = (HtmlSelect)control; 148 ht[txt.ID] = txt.Value.Trim(); 149 } 150 if (control is HtmlInputHidden) 151 { 152 HtmlInputHidden txt = (HtmlInputHidden)control; 153 ht[txt.ID] = txt.Value.Trim(); 154 } 155 if (control is HtmlInputPassword) 156 { 157 HtmlInputPassword txt = (HtmlInputPassword)control; 158 ht[txt.ID] = txt.Value.Trim(); 159 } 160 if (control is HtmlInputCheckBox) 161 { 162 HtmlInputCheckBox chk = (HtmlInputCheckBox)control; 163 ht[chk.ID] = chk.Checked ? 1 : 0; 164 } 165 if (control is HtmlTextArea) 166 { 167 HtmlTextArea area = (HtmlTextArea)control; 168 ht[area.ID] = area.Value.Trim(); 169 } 170 } 171 return ht; 172 } 173 #endregion 174 }