校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中

ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中

熱門標(biāo)簽:河南語(yǔ)音外呼系統(tǒng)公司 寧夏機(jī)器人電銷 400電話辦理最優(yōu)質(zhì) t3出行地圖標(biāo)注怎么做 400免費(fèi)電話怎么辦理 河北網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng) 威海電銷 外呼電銷機(jī)器人軟件 關(guān)于宗地圖標(biāo)注技術(shù)規(guī)范

我們知道ASP.NET MVC有個(gè)強(qiáng)大的地方就是Form表單提交到action的時(shí)候,可以直接將Form的參數(shù)直接裝配到action的參數(shù)實(shí)體對(duì)象中

比如

復(fù)制代碼 代碼如下:

action方法 Register(UserModel userModel)

{

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

}


在提交表單的時(shí)候,會(huì)自動(dòng)講表單里面的字段封裝到對(duì)應(yīng)的UserModel字段里面

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

因?yàn)槊看味家カ@得數(shù)據(jù),優(yōu)秀的程序員應(yīng)該要學(xué)會(huì)代碼封裝,代碼復(fù)用,重復(fù)的工作不要做

我們其實(shí)可以利用反射來(lái)實(shí)例化對(duì)象的(自動(dòng)裝配)

好了廢話不多....

pageload里面很簡(jiǎn)單了

復(fù)制代碼 代碼如下:

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

關(guān)鍵就是基類里面的AssembleModel 方法了

基類里面

我們首先獲取到上下文的參數(shù) IT404

復(fù)制代碼 代碼如下:

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

基類很簡(jiǎn)單,就是將上下文的提交的參數(shù)存放到valueCollection

然后再看AssembleModel方法了,這是一個(gè)泛型方法

復(fù)制代碼 代碼如下:

/// 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>
        /// 根據(jù)NameValueCollection 自動(dòng)裝配
        /// /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);//創(chuàng)建指定類型實(shí)例
            foreach (string key in valueCollection.Keys)//所有上下文的值
            {
                foreach (var PropertyInfo in propertyInfoList)//所有實(shí)體屬性
                {
                    if (key.ToLower() == PropertyInfo.Name.ToLower())
                    {
                        PropertyInfo.SetValue(obj, valueCollection[key], null);//給對(duì)象賦值
                    }
                }
            }
            return (T)obj;
        }

很簡(jiǎn)單,就是遍歷參數(shù),然后用反射遍歷出實(shí)體類的共有屬性,然后根據(jù)名字name來(lái)匹配和賦值

所以以后我們只需要一句代碼 就能自動(dòng)裝配上從客戶端存過(guò)來(lái)的值了

復(fù)制代碼 代碼如下:

UserModel userModel = AssembleModelUserModel>(base.valueCollection);

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

標(biāo)簽:咸寧 樂(lè)山 吉林 固原 池州 廣元 賀州 淮北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中》,本文關(guān)鍵詞  ASP.NET,中,實(shí)現(xiàn),Form,表單,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP.NET中實(shí)現(xiàn)Form表單字段值自動(dòng)填充到操作模型中的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 抚顺县| 双桥区| 惠安县| 原平市| 九龙坡区| 桃园县| 平利县| 静安区| 互助| 长岛县| 黔江区| 峡江县| 永川市| 准格尔旗| 嘉荫县| 宜章县| 潼南县| 榆林市| 武鸣县| 温泉县| 耒阳市| 卓资县| 临高县| 乌兰浩特市| 赤水市| 扎鲁特旗| 宁城县| 石景山区| 开原市| 潞西市| 桃园县| 千阳县| 东安县| 砀山县| 密云县| 宜春市| 宁陵县| 穆棱市| 柳河县| 衡东县| 保康县|