asp.Netは反射,汎用,静的手法を用いてフォーム値をModelに迅速に取得する方法を実現する

1896 ワード

本文の例は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 where T: new()
{
  /// 
  ///  Model  
  /// 
  /// Model
  /// model
  /// Request
  /// 
  public static int GetPost(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を使わない.後ですべてのフォームが簡単に処理でき、2行のコードができます.

News news = new News();
HenqPost.GetPost(ref news, Request.Form);
//          Over 。


構成は必要ありません.約束は最高の構成です.約定:フォーム・アイテムの名前は、エンティティ・クラスの属性名に対応することが望ましい(異なる場合は、反射方法は自分のルールに従って改造されます).フォームに値を割り当て、webformであればこのようにして、自分で書くことができて、原理の差は多くありません.
本文で述べたように皆さんにasp.Netプログラミングが役立ちます.