反射實現所有實體的增刪改操作(jQuery+json)

來源:互聯網
上載者:User

續前面的無重新整理分頁控制項,編輯,修改控制項的實現,

(這裡是地址:http://www.cnblogs.com/liuju150/archive/2009/09/11/1564994.html)

那麼,有三四十張表的話,

前台表單是自動產生的.

只不過產生的實體和資料庫裡的表名都是有規律可以找的.

還有操作實體的類,

所以我只要通過前台把表單傳過來.

我就可以知道要反射到哪個實體,

然後對實體進行相應的賦值.

再反射一個實體操作的類.

就可以實現對實體的增刪改操作了

 

 

上面是我的資料庫表名

下面是我的實體,和實體操作的類名

 

 

Code
private void InsertAndUpdateObj(HttpContext context)
        {
            string ClassName = context.Request.Form["ClassName"].ToString();
            string ClassData = context.Request.Form["ClassData"].ToString();
            string IntOrUpd = context.Request.Form["isIns"].ToString();

            string[] ClassNameArray = ClassName.Split('_');
            string CNStr = "";
            for (int i = 0; i < ClassNameArray.Length; i++)
            {
                CNStr += ClassNameArray[i].Substring(0, 1).ToUpper() + ClassNameArray[i].Substring(1).ToLower();
            }
            ClassName = CNStr;

            //反射實體
            Assembly Ab = Assembly.Load("GradView.Library");
            Type type = Ab.GetType("GradView.Library.Data." + ClassName, true, false);
            object obj = Activator.CreateInstance(type);
            DataContractJsonSerializer dcjs = new DataContractJsonSerializer(type);
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(ClassData));
            obj = dcjs.ReadObject(ms);

            //反射業務操作
            string opName = "Biz" + ClassName;
            string opMethod = "Insert";
            switch (IntOrUpd)
            {
                case "0": opMethod = "Update"; break;
                case "1": opMethod = "Insert"; break;
                case "2": opMethod = "Delete"; break;
                default: opMethod = "Insert"; break;
            }
            Type opType = Ab.GetType("GradView.Library.Data." + opName, true, false);
            object opObj = Activator.CreateInstance(opType);
            MethodInfo[] mi = opType.GetMethods();
            for (int i = 0; i < mi.Length; i++)
            {
                if (mi[i].Name == opMethod)
                {
                    object[] par = { 
                                       obj
                                   };
                    try
                    {
                        mi[i].Invoke(opObj, par);
                        break;
                    }
                    catch
                    {
                    }
                }
            }
        }

所以我只要寫這樣的方法來實現,

前台就可以通過jQuery把表單裡的值組成json

後台接收這個json

就可以對實體進行相應的操作了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.