這篇文章主要為大家展示了“asp.net如何使用反射,泛型,靜態方法快速獲取表單值到Model”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“asp.net如何使用反射,泛型,靜態方法快速獲取表單值到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"]);
經常還會出現寫錯情況,尤其是加班寫這種無聊代碼的時候...
使用反射,泛型,靜態方法可以很容易解決這個問題。說的好像有點高深,其實超級簡單。見代碼。
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++;//記錄賦值成功的屬性數 } catch { } } } return va; } }
只所以用靜態方法,主要是圖方便,不用new。
以后所有的表單都可以很簡單的處理了,兩行代碼搞定。
News news = new News(); HenqPost<News>.GetPost(ref news, Request.Form); //煩人的為實體類賦值就Over了。
不需要任何配置,約定是最好的配置。
約定:表單項的名稱最好和實體類的屬性名字對應(如果你要不一樣,反射方法根據自己的規則改造下)。
為表單賦值,如果是webform的話也可以采取這種方式,可以自己寫下,原理差不多。
以上是“asp.net如何使用反射,泛型,靜態方法快速獲取表單值到Model”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。