asp.net實現(xiàn)利用反射,泛型,靜態(tài)方法快速獲取表單值到Model的方法
本文實例講述了asp.net實現(xiàn)利用反射,泛型,靜態(tài)方法快速獲取表單值到Model的方法。分享給大家供大家參考,具體如下:
這是初級的,很簡單,牛人可以不看了。不過還算實用。
在項目中經常需要處理表單,給model賦值,很煩人的一些重復代碼。如下邊的代碼:
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"]);
經常還會出現(xiàn)寫錯情況,尤其是加班寫這種無聊代碼的時候...
使用反射,泛型,靜態(tài)方法可以很容易解決這個問題。說的好像有點高深,其實超級簡單。見代碼。
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);//為屬性賦值,并轉換鍵值的類型為該屬性的類型
va++;//記錄賦值成功的屬性數(shù)
}
catch
{
}
}
}
return va;
}
}
只所以用靜態(tài)方法,主要是圖方便,不用new。
以后所有的表單都可以很簡單的處理了,兩行代碼搞定。
News news = new News(); HenqPost<News>.GetPost(ref news, Request.Form); //煩人的為實體類賦值就Over了。
不需要任何配置,約定是最好的配置。
約定:表單項的名稱最好和實體類的屬性名字對應(如果你要不一樣,反射方法根據自己的規(guī)則改造下)。
為表單賦值,如果是webform的話也可以采取這種方式,可以自己寫下,原理差不多。
希望本文所述對大家asp.net程序設計有所幫助。
相關文章
asp.net基于Web Service實現(xiàn)遠程上傳圖片的方法
這篇文章主要介紹了asp.net基于Web Service實現(xiàn)遠程上傳圖片的方法,涉及asp.net調用Web Service的文件流操作與文件傳輸實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-12-12
ASP.NET下上傳圖片到數(shù)據庫,并且讀出圖片的代碼(詳細版)
上傳圖片到數(shù)據庫,從數(shù)據庫的創(chuàng)建到數(shù)據庫中圖片的現(xiàn)實都給出了具體的代碼,因為asp.net版本的問題,大家可能需要稍微修改下。2010-07-07
.Net?Core3.0?WebApi?項目框架搭建之使用Serilog替換掉Log4j
Serilog 是一個用于.NET應用程序的日志記錄開源庫,配置簡單,接口干凈,并可運行在最新的.NET平臺上,這篇文章主要介紹了.Net?Core3.0?WebApi?項目框架搭建之使用Serilog替換掉Log4j,需要的朋友可以參考下2022-02-02
asp.net 下拉列表無級數(shù)據綁定實現(xiàn)代碼
asp.net 下拉列表無級數(shù)據綁定實現(xiàn)代碼,需要的朋友可以參考下。2010-10-10
asp.net core MVC 過濾器之ActionFilter過濾器(2)
這篇文章主要為大家詳細介紹了asp.net core MVC過濾器之ActionFilter過濾器,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

