你的位置:首页 > ASP.net教程

[ASP.net教程]做一个思想的码农


      这段时间一直在做公司的项目,突然间有这么一个想法,其实逻辑方便的还好,可是当我们想把前台控件的值赋给对象时,或者是对象的值赋值给前台控件。我们每天都做着相同的事情,这着实是一个让人郁闷的事情。没有办法,我们每天的工作无外乎就是Ctrl+C,然后Ctrl+V最后把ID什么的改改,有用的用,没有用的删除,然后在创建一个新的。突然发现我们实实在在的就是一个码农,和那些工地上搬砖的哥们们没有什么区别,无外乎就是他们用的是体力,我们只要细心点用用键盘就OK。好了说了这么多都是废话,那么我就直接上代码了,接招............

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestWeb._Default" %> 2  3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4  5 <html "http://www.w3.org/1999/xhtml" > 6 <head runat="server"> 7   <title>测试</title> 8 </head> 9 <body>10   <form id="form1" runat="server">11   <div>12   <input id="hlName" runat="server" value="1" />13   <asp:TextBox ID="hlCode" runat="server" Text="12"></asp:TextBox>14   </div>15   </form>16 </body>17 </html>

前台代码
那么我们先建一个对象,直接上代码!
 1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Linq; 5 using System.Web; 6 using System.Web.Security; 7 using System.Web.UI; 8 using System.Web.UI.HtmlControls; 9 using System.Web.UI.WebControls;10 using System.Web.UI.WebControls.WebParts;11 using System.12 13 namespace TestWeb14 {15   public class Person16   {17     private string _Name;18     /// <summary>19     /// 名称20     /// </summary>21     public string Name22     {23       get { return _Name; }24       set { _Name = value; }25     }26     private string _Code;27     /// <summary>28     /// 编码29     /// </summary>30     public string Code31     {32       get { return _Code; }33       set { _Code = value; }34     }35   }36 }

对象
这时我们看看以前的做法是什么,虽然这种方法我用了很多次,但是这个时候我突然发现有一种想吐的冲动。如果这个对象我们有几十个属性,那么这是会不会死人?我想会的!
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.namespace TestWeb{  public partial class _Default : System.Web.UI.Page  {    protected void Page_Load(object sender, EventArgs e)    {      Person per = new Person();      per.Name = "张三";      per.Code = "434121312312";      hlCode = per.Code;      hlName = per.Name;    }  }}

最原始的方法
是不是感觉很爽?不用管你前台页面到底有多少的控件,来者不惧惧者不来!
 1 using System; 2 using System.Collections; 3 using System.Configuration; 4 using System.Data; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Security; 8 using System.Web.UI; 9 using System.Web.UI.HtmlControls;10 using System.Web.UI.WebControls;11 using System.Web.UI.WebControls.WebParts;12 using System.13 using System.Reflection;14 15 namespace TestWeb16 {17   public partial class _Default : System.Web.UI.Page18   {19     protected void Page_Load(object sender, EventArgs e)20     {21       Fill(this);22     }23     /// <summary>24     /// 填充控件25     /// </summary>26     /// <param name="page"></param>27     public void Fill(System.Web.UI.Page page)28     {29       Person per = new Person();30       per.Name = "张三";31       per.Code = "434121312312";32       var type = per.GetType().GetProperties();33       foreach (PropertyInfo item in type)34       {35         var s1 = page.FindControl("hl" + item.Name);36         if (s1 != null)37         {38           TextBox t = (TextBox)s1;39           t.Text = item.GetValue(per, null).ToString();40         }41       }42 43     }44   }45 }

新的方法

    

那么我们用同样的道理来看看,我们前台赋值了,怎么去给对应的对象上赋值呢?其实这个也很简单。同样我们也对比一下以前的方法和现在的方法到底有什么区别。首先我们来看看以前的代码
 1 using System; 2 using System.Collections; 3 using System.Configuration; 4 using System.Data; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Security; 8 using System.Web.UI; 9 using System.Web.UI.HtmlControls;10 using System.Web.UI.WebControls;11 using System.Web.UI.WebControls.WebParts;12 using System.13 using System.Reflection;14 15 namespace TestWeb16 {17   public partial class _Default : System.Web.UI.Page18   {19     protected void Page_Load(object sender, EventArgs e)20     {21       Person per = new Person();22       per.Name = hlName.Text;23       per.Code = hlCode.Text;24     } 25   }26 }

以前的工作代码   
现在我们再来看看我们新的方法,废话不多说直接上代码。
 1 using System; 2 using System.Collections; 3 using System.Configuration; 4 using System.Data; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Security; 8 using System.Web.UI; 9 using System.Web.UI.HtmlControls;10 using System.Web.UI.WebControls;11 using System.Web.UI.WebControls.WebParts;12 using System.13 using System.Reflection;14 15 namespace TestWeb16 {17   public partial class _Default : System.Web.UI.Page18   {19     protected void Page_Load(object sender, EventArgs e)20     {21       Full(this);22     }23 24     public void Full(System.Web.UI.Page page)25     {26       Person per = new Person();27       var type = per.GetType().GetProperties();28       foreach (PropertyInfo item in type)29       {30         var s1 = page.FindControl("hl" + item.Name);31         if (s1 != null)32         {33           TextBox t = (TextBox)s1;34           item.SetValue(per,t.Text, null);35         }36       }37     }38   }39 }

自动为对象赋值的方法

     今天先就写这么多,希望能对大家有点用处!