반사, 범용, 정적 방법으로 폼 값을 모델로 빠르게 가져오기
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이라면 이런 방식을 취할 수 있고 스스로 쓸 수 있어 원리가 크게 다르지 않다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DuxCms의 AdminUserModel 분석텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.