반사, 범용, 정적 방법으로 폼 값을 모델로 빠르게 가져오기

2042 단어 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 。  

어떤 설정도 필요 없습니다. 약속은 가장 좋은 설정입니다.약정: 표 항목의 명칭은 실체류의 속성 이름과 대응하는 것이 가장 좋다(만약 그렇지 않다면 반사 방법은 자신의 규칙에 따라 개조한다).폼에 값을 부여하기 위해 웹form이라면 이런 방식을 취할 수 있고 스스로 쓸 수 있어 원리가 크게 다르지 않다.

좋은 웹페이지 즐겨찾기