using System; using System.Collections.Generic; using System.Text; using System.Web.UI; using System.Web.UI.WebControls; using System.Reflection; namespace Ant.Frame { public class BaisePage : Page { /// /// 从页面读取控件值,并赋值给实体。 /// 引用实例Report_ProformaInvoiceAudit factoryMonthlyReport = new Report_ProformaInvoiceAudit(); /// factoryMonthlyReport = Getter(factoryMonthlyReport); /// /// 实体类型< peparam> /// 实体的一个实例 /// public T Getter(T entity) { TextBox currentTextBox = null; foreach (Control cp in Page.Controls) { foreach (Control ct in cp.Controls) { if (ct is System.Web.UI.HtmlControls.HtmlForm) { foreach (Control con in ct.Controls) { foreach (Control control in con.Controls) { if (control is TextBox && control.ClientID.Contains("txt")) { // currentTextBox = (TextBox)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; PropertyInfo currentInfo = entity.GetType().GetProperty(fieldName); object d; //if (((System.Reflection.MemberInfo)(currentInfo.PropertyType)).Name.Contains("String")) if (currentInfo.PropertyType.Name.Contains("String")) { d = currentTextBox.Text; } else { if (currentInfo.PropertyType.FullName.Contains("Decimal")) { d = decimal.Parse(currentTextBox.Text); } else { d = int.Parse(currentTextBox.Text); } } currentInfo.SetValue(entity, d, null); //entity.GetType().InvokeMember(fieldName, BindingFlags.SetProperty, null, entity, new object[] { currentTextBox.Text }); } } } } } } return entity; } /// /// 将实体展现到页面控件中。 /// Setter(factoryMonthlyReport); /// /// 实体类型 /// 从数据库中查找出的实体的实例 public void Setter(T entity) { TextBox currentTextBox = null; foreach (Control cp in Page.Controls) { foreach (Control ct in cp.Controls) { if (ct is System.Web.UI.HtmlControls.HtmlForm) { foreach (Control con in ct.Controls) { foreach (Control control in con.Controls) { if (control is TextBox && control.ClientID.Contains("txt")) { currentTextBox = (TextBox)control; string fieldName = control.ClientID.Split('_')[(control.ClientID.Split('_').Length) - 1]; currentTextBox.Text = entity.GetType().InvokeMember(fieldName, BindingFlags.GetProperty, null, entity, null).ToString(); } } } } } } } } }