<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Reflection;
    using System.IO;
    using System.Text;

    namespace ProjectDemo.Common
    {
        public static class EntityCopy
        {
            
             #region
             /// <summary>

            /// 通過搜索頁面對應控件來構造Model對象(要求控件必須以“_Model的屬性名”來命名(如:_Name),并大小寫一致)

            /// </summary>

            /// <param name="model">要構造的Model對象()</param>

            /// <param name="parentControl">控件的容器(比如Page或者Master的站位控件)</param>

            /// <returns>返回參數里model</returns>

            public static T GetModel<T>(T model, Control parentControl)

            {

                Type t = model.GetType();

                PropertyInfo[] pi = t.GetProperties();

                foreach (PropertyInfo p in pi)

                {

                    SetControlValueToModel(model, p, parentControl);

                }

                return model;

            }

     

            /// <summary>

            /// 把頁面控件上的值賦值給Model對象(要求控件必須以“_Model的屬性名”來命名(如:_Name),并大小寫一致)

            /// </summary>

            /// <param name="model">要賦值的Model對象</param>

            /// <param name="p">某個屬性</param>

            /// <param name="parentControl">控件的容器(比如Page或者Master的站位控件)</param>

            private static void SetControlValueToModel(object model, PropertyInfo p, Control parentControl)

            {

                Control control = parentControl.FindControl("_" + p.Name);

                if (control != null)

                {

                    Type t_c = control.GetType();

                    switch (t_c.FullName)

                    {

                        case "System.Web.UI.WebControls.TextBox": SetValue(model, p, ((TextBox)control).Text); break;

                        case "System.Web.UI.WebControls.CheckBox": SetValue(model, p, ((CheckBox)control).Checked); break;

                        case "System.Web.UI.WebControls.CheckBoxList":

                            CheckBoxList cbl = ((CheckBoxList)control);

                            StringBuilder sb = new StringBuilder();

                            for (int i = 0; i < cbl.Items.Count; i++)

                            {

                                if (cbl.Items[i].Selected)

                                {

                                    sb.Append(i);

                                    sb.Append(",");

                                }

                            }

                            SetValue(model, p, sb.ToString().TrimEnd(',')); break;

                        case "System.Web.UI.WebControls.Image": SetValue(model, p, ((Image)control).ImageUrl); break;

                        case "System.Web.UI.WebControls.DropDownList": SetValue(model, p, ((DropDownList)control).SelectedValue); break;

                        case "System.Web.UI.WebControls.RadioButtonList": SetValue(model, p, ((RadioButtonList)control).SelectedValue); break;

                        case "System.Web.UI.WebControls.HiddenField": SetValue(model, p, ((HiddenField)control).Value); break;

                        default: break;

                    }

                }

            }

     

            /// <summary>

            /// 把值賦給指定Model對象指定屬性上

            /// </summary>

            /// <param name="model">需要賦值的Model對象</param>

            /// <param name="p">某個屬性</param>

            /// <param name="value">要賦給Model的屬性的值</param>

            private static void SetValue(object model, PropertyInfo p, object value)

            {

                if (p.PropertyType.FullName == "System.Guid")

                {

                    p.SetValue(model, new Guid(value.ToString()), null);

                }

                else

                {

                    p.SetValue(model, Convert.ChangeType(value, p.PropertyType), null);

                }

            }

     

            #endregion

     

            #region 反射Model綁定頁面控件

     

            /// <summary>

            /// 綁定Model的值到頁面上對應控件(要求控件必須以“_Model的屬性名”來命名(如:_Name),并大小寫一致)

            /// </summary>

            /// <param name="model">賦好值的Model</param>

            /// <param name="parentControl">控件的容器(比如Page或者Master的站位控件)</param>

            public static void BindControls(object model, Control parentControl)

            {

                Type t = model.GetType();

                PropertyInfo[] pi = t.GetProperties();

                foreach (PropertyInfo p in pi)

                {

                    SetModelValueToControl(model, p, parentControl);

                }

            }

     

            /// <summary>

            /// 把Model的值賦給頁面上的控件(目前只針對Web)

            /// </summary>

            /// <param name="model">賦好值的Model</param>

            /// <param name="p">Model的某個屬性</param>

            /// <param name="parentControl">控件的容器(比如Page或者Master的站位控件)</param>

            private static void SetModelValueToControl(object model, PropertyInfo p, Control parentControl)

            {

                Control control = parentControl.FindControl("_" + p.Name);

                if (control != null)

                {

                    Type t_c = control.GetType();

                    switch (t_c.FullName)

                    {
                        case "System.Web.UI.WebControls.TextBox": ((TextBox)control).Text = p.GetValue(model, null).ToString(); break;
                        case "System.Web.UI.WebControls.Label": ((Label)control).Text = p.GetValue(model, null).ToString(); break;

                        case "System.Web.UI.WebControls.Literal": ((Literal)control).Text = p.GetValue(model, null).ToString(); break;

                      

                        case "System.Web.UI.WebControls.Image": ((Image)control).ImageUrl = p.GetValue(model, null).ToString(); break;

                        case "System.Web.UI.WebControls.DropDownList": ((DropDownList)control).SelectedValue = p.GetValue(model, null).ToString(); break;

                        case "System.Web.UI.WebControls.RadioButtonList": ((RadioButtonList)control).SelectedValue = p.GetValue(model, null).ToString(); break;

                        case "System.Web.UI.WebControls.CheckBox": ((CheckBox)control).Checked = (bool)p.GetValue(model, null); break;

                        case "System.Web.UI.WebControls.CheckBoxList":

                            string[] arr = ((string)p.GetValue(model, null)).Split(',');

                            CheckBoxList cbl = ((CheckBoxList)control);

                            for (int i = 0; i < arr.Length; i++)

                            {

                                cbl.Items[int.Parse(arr[i])].Selected = true;

                            }

                            break;

                        case "System.Web.UI.WebControls.HiddenField": ((HiddenField)control).Value = p.GetValue(model, null).ToString(); break;

                        default: break;

                    }

                }

            }

               #endregion

     


        }
        public class Person
        {
            public string Name { set; get; }
            public string Sex { set; get; }
        }
    }

    posted on 2013-06-09 17:13 sanmao 閱讀(679) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码专区在线| 国产成人久久精品亚洲小说| 84pao强力永久免费高清| 亚洲人JIZZ日本人| 成全视成人免费观看在线看| 不卡一卡二卡三亚洲| 少妇性饥渴无码A区免费| 无码国产精品一区二区免费虚拟VR | 亚洲男人天堂2022| 无码国产精品一区二区免费式芒果 | 内射干少妇亚洲69XXX| 深夜福利在线免费观看| 国产成人免费网站| 亚洲伦理一二三四| 中国一级毛片视频免费看| 国产精品V亚洲精品V日韩精品 | 亚洲午夜久久久久久噜噜噜| 午夜小视频免费观看| 久久国产乱子伦免费精品| 一区视频免费观看| 麻豆一区二区三区蜜桃免费| 亚洲一卡2卡三卡4卡有限公司| 性生交片免费无码看人| 亚洲.国产.欧美一区二区三区| 国内外成人免费视频| 美女视频黄免费亚洲| 麻豆一区二区免费播放网站| 亚洲不卡视频在线观看| 国产精品酒店视频免费看| 亚洲人成www在线播放| 亚洲AV永久纯肉无码精品动漫| 在线观看av永久免费| 亚洲国产AV无码一区二区三区| 成年轻人网站色免费看| 亚洲色丰满少妇高潮18p| 国产精品无码免费播放| 色偷偷噜噜噜亚洲男人| 亚洲国产成人一区二区精品区| 91成人在线免费观看| 国产在亚洲线视频观看| 久久亚洲精品中文字幕三区|