婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET中實現Form表單字段值自動填充到操作模型中

ASP.NET中實現Form表單字段值自動填充到操作模型中

熱門標簽:河南語音外呼系統公司 寧夏機器人電銷 400電話辦理最優質 t3出行地圖標注怎么做 400免費電話怎么辦理 河北網絡回撥外呼系統 威海電銷 外呼電銷機器人軟件 關于宗地圖標注技術規范

我們知道ASP.NET MVC有個強大的地方就是Form表單提交到action的時候,可以直接將Form的參數直接裝配到action的參數實體對象中

比如

復制代碼 代碼如下:

action方法 Register(UserModel userModel)

{

   ............................. 

}


在提交表單的時候,會自動講表單里面的字段封裝到對應的UserModel字段里面

那么 WebForm里面可不可以也紫將呢?

因為每次都要去獲得數據,優秀的程序員應該要學會代碼封裝,代碼復用,重復的工作不要做

我們其實可以利用反射來實例化對象的(自動裝配)

好了廢話不多....

pageload里面很簡單了

復制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPost())
            {
                InitPage();//第一次訪問呈現頁面
            }
            else
            {
                UserModel userModel = AssembleModelUserModel>(base.valueCollection);
            }
        }

關鍵就是基類里面的AssembleModel 方法了

基類里面

我們首先獲取到上下文的參數 IT404

復制代碼 代碼如下:

protected NameValueCollection valueCollection = HttpContext.Current.Request.Params;

基類很簡單,就是將上下文的提交的參數存放到valueCollection

然后再看AssembleModel方法了,這是一個泛型方法

復制代碼 代碼如下:

/// summary>
        /// 反射獲取類的屬性
        /// /summary>
        /// param name="type">/param>
        /// returns>/returns>
        protected PropertyInfo[] GetPropertyInfoArray(Type type)
        {
            PropertyInfo[] props = null;
            try
            {
                object obj = Activator.CreateInstance(type);
                props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            }
            catch (Exception ex)
            {

            }
            return props;
        }

        /// summary>
        /// 根據NameValueCollection 自動裝配
        /// /summary>
        /// typeparam name="T">/typeparam>
        /// param name="valueCollection">/param>
        /// returns>/returns>
        protected T AssembleModelT>(NameValueCollection valueCollection)
        {
            PropertyInfo[] propertyInfoList = GetPropertyInfoArray(typeof(T));
            object obj = Activator.CreateInstance(typeof(T), null);//創建指定類型實例
            foreach (string key in valueCollection.Keys)//所有上下文的值
            {
                foreach (var PropertyInfo in propertyInfoList)//所有實體屬性
                {
                    if (key.ToLower() == PropertyInfo.Name.ToLower())
                    {
                        PropertyInfo.SetValue(obj, valueCollection[key], null);//給對象賦值
                    }
                }
            }
            return (T)obj;
        }

很簡單,就是遍歷參數,然后用反射遍歷出實體類的共有屬性,然后根據名字name來匹配和賦值

所以以后我們只需要一句代碼 就能自動裝配上從客戶端存過來的值了

復制代碼 代碼如下:

UserModel userModel = AssembleModelUserModel>(base.valueCollection);

您可能感興趣的文章:
  • asp.net 代碼隱藏的編碼模型
  • ASP.NET MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面
  • ASP.NET的事件模型(很適合學習的文章)
  • asp.net mvc路由篇 如何找到 IHttpHandler方法介紹
  • ASP.NET Web API教程 創建域模型的方法詳細介紹
  • asp.net不用設置iis實現url重寫 類似偽靜態路由
  • ASP.NET MVC5 網站開發框架模型、數據存儲、業務邏輯(三)
  • 為ASP.NET MVC及WebApi添加路由優先級
  • 淺析ASP.NET路由模型工作原理

標簽:咸寧 樂山 吉林 固原 池州 廣元 賀州 淮北

巨人網絡通訊聲明:本文標題《ASP.NET中實現Form表單字段值自動填充到操作模型中》,本文關鍵詞  ASP.NET,中,實現,Form,表單,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET中實現Form表單字段值自動填充到操作模型中》相關的同類信息!
  • 本頁收集關于ASP.NET中實現Form表單字段值自動填充到操作模型中的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 石渠县| 乌拉特中旗| 杂多县| 怀宁县| 大丰市| 鹿泉市| 临汾市| 丰县| 兴义市| 苍溪县| 拜泉县| 常宁市| 汾西县| 库车县| 阿拉善盟| 拜城县| 象州县| 万州区| 萍乡市| 高淳县| 瑞昌市| 唐河县| 大方县| 汾西县| 渭源县| 舒兰市| 平乡县| 三都| 永宁县| 叙永县| 秭归县| 酉阳| 盐边县| 苍南县| 平塘县| 陕西省| 平塘县| 红原县| 海盐县| 建昌县| 朔州市|