中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在ASP.NET中將Form表單的字段值填充到模型中

發布時間:2020-12-18 14:52:13 來源:億速云 閱讀:183 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關如何在ASP.NET中將Form表單的字段值填充到模型中,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

我們知道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 = AssembleModel<UserModel>(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 AssembleModel<T>(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 = AssembleModel<UserModel>(base.valueCollection);

看完上述內容,你們對如何在ASP.NET中將Form表單的字段值填充到模型中有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肃北| 靖安县| 湘乡市| 遵义市| 登封市| 吴桥县| 精河县| 德安县| 顺平县| 綦江县| 阳曲县| 富阳市| 长顺县| 林西县| 竹溪县| 安岳县| 黄石市| 沙坪坝区| 玉龙| 汝南县| 荃湾区| 十堰市| 华蓥市| 西乌珠穆沁旗| 太原市| 怀来县| 吴江市| 常宁市| 徐闻县| 黄龙县| 平顶山市| 长宁区| 弥勒县| 庆云县| 故城县| 临湘市| 平泉县| 滨州市| 那曲县| 突泉县| 普宁市|