asp.net實(shí)現(xiàn)利用反射,泛型,靜態(tài)方法快速獲取表單值到Model的方法
本文實(shí)例講述了asp.net實(shí)現(xiàn)利用反射,泛型,靜態(tài)方法快速獲取表單值到Model的方法。分享給大家供大家參考,具體如下:
這是初級(jí)的,很簡(jiǎn)單,牛人可以不看了。不過(guò)還算實(shí)用。
在項(xiàng)目中經(jīng)常需要處理表單,給model賦值,很煩人的一些重復(fù)代碼。如下邊的代碼:
News news = new News(); news.Id = int.Parse(Request.Form["Id"]); news.Category = int.Parse(Request.Form["Category"]); news.Title = Request.Form["Title"]; news.CreateTime = DateTime.Parse(Request.Form["CreateTime"]);
經(jīng)常還會(huì)出現(xiàn)寫(xiě)錯(cuò)情況,尤其是加班寫(xiě)這種無(wú)聊代碼的時(shí)候...
使用反射,泛型,靜態(tài)方法可以很容易解決這個(gè)問(wèn)題。說(shuō)的好像有點(diǎn)高深,其實(shí)超級(jí)簡(jiǎn)單。見(jiàn)代碼。
public static class HenqPost<T> where T: new()
{
/// <summary>
/// 為Model賦值
/// </summary>
/// <typeparam name="T">Model</typeparam>
/// <param name="t">model</param>
/// <param name="form">Request</param>
/// <returns></returns>
public static int GetPost<T>(ref T t, NameValueCollection form)
{
int va=0;
Type type = t.GetType();//獲取類型
PropertyInfo[] pi=type.GetProperties();//獲取屬性集合
foreach( PropertyInfo p in pi )
{
if (form[p.Name] != null)
{
try
{
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null);//為屬性賦值,并轉(zhuǎn)換鍵值的類型為該屬性的類型
va++;//記錄賦值成功的屬性數(shù)
}
catch
{
}
}
}
return va;
}
}
只所以用靜態(tài)方法,主要是圖方便,不用new。
以后所有的表單都可以很簡(jiǎn)單的處理了,兩行代碼搞定。
News news = new News(); HenqPost<News>.GetPost(ref news, Request.Form); //煩人的為實(shí)體類賦值就Over了。
不需要任何配置,約定是最好的配置。
約定:表單項(xiàng)的名稱最好和實(shí)體類的屬性名字對(duì)應(yīng)(如果你要不一樣,反射方法根據(jù)自己的規(guī)則改造下)。
為表單賦值,如果是webform的話也可以采取這種方式,可以自己寫(xiě)下,原理差不多。
希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。
相關(guān)文章
Visual?Studio創(chuàng)建WPF項(xiàng)目
這篇文章介紹了使用Visual?Studio創(chuàng)建WPF項(xiàng)目的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
Repeater事件OnItemCommand取得行內(nèi)控件的方法
這篇文章主要介紹了Repeater事件OnItemCommand取得行內(nèi)控件的方法,有需要的朋友可以參考一下2014-01-01
asp.net MVC使用PagedList.MVC實(shí)現(xiàn)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了asp.net MVC使用PagedList.MVC實(shí)現(xiàn)分頁(yè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
ASP.NET實(shí)現(xiàn)用戶注冊(cè)和驗(yàn)證功能(第4節(jié))
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)用戶注冊(cè)和驗(yàn)證功能,學(xué)習(xí)ASP.NET驗(yàn)證控件的作用和使用方法,在此基礎(chǔ)上了解常用第三方控件,需要的朋友可以參考一下2015-08-08
datagrid綁定list沒(méi)有數(shù)據(jù) 表頭不顯示的解決方法
datagrid綁定list沒(méi)有數(shù)據(jù) 表頭不顯示的問(wèn)題,那是因?yàn)?綁定了null,你給list new一下就好 表頭就會(huì)有啦2013-05-05
.net core實(shí)用技巧——將EF Core生成的SQL語(yǔ)句顯示在控制臺(tái)中
這篇文章主要介紹了如何將EF Core生成的SQL語(yǔ)句顯示在控制臺(tái)中,幫助大家更好的理解和學(xué)習(xí).net core,感興趣的朋友可以了解下2020-08-08
.net 彈出消息框后導(dǎo)致頁(yè)面樣式變亂解決方法
點(diǎn)擊按鈕,執(zhí)行提交操作,彈出消息框后,頁(yè)面的樣式變亂,已經(jīng)確定了不是css樣式的問(wèn)題,接下來(lái)與大家共同探討下究竟是什么問(wèn)題導(dǎo)致頁(yè)面變亂2013-04-04
獲取轉(zhuǎn)向地址的URL的源文件(可自定義REFER)
獲取轉(zhuǎn)向地址的URL的源文件(可自定義REFER)...2006-09-09

