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

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

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

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

比如

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

action方法 Register(UserModel userModel)

{

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

}


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

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

因為每次都要去獲得數(shù)據(jù),優(yōu)秀的程序員應(yīng)該要學會代碼封裝,代碼復(fù)用,重復(fù)的工作不要做

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

好了廢話不多....

pageload里面很簡單了

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

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

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

基類里面

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

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

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

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

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

復(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 自動裝配
        /// /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)建指定類型實例
            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;
        }

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

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

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

UserModel userModel = AssembleModelUserModel>(base.valueCollection);

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《ASP.NET中實現(xiàn)Form表單字段值自動填充到操作模型中》,本文關(guān)鍵詞  ASP.NET,中,實現(xiàn),Form,表單,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET中實現(xiàn)Form表單字段值自動填充到操作模型中》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET中實現(xiàn)Form表單字段值自動填充到操作模型中的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章