当前位置: 代码迷 >> .NET相关 >> 做一个思维的码农
  详细解决方案

做一个思维的码农

热度:164   发布时间:2016-04-24 02:36:04.0
做一个思想的码农

      这段时间一直在做公司的项目,突然间有这么一个想法,其实逻辑方便的还好,可是当我们想把前台控件的值赋给对象时,或者是对象的值赋值给前台控件。我们每天都做着相同的事情,这着实是一个让人郁闷的事情。没有办法,我们每天的工作无外乎就是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 xmlns="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.Xml.Linq;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.Xml.Linq;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.Xml.Linq;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.Xml.Linq;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.Xml.Linq;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 }
自动为对象赋值的方法

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

4楼[水amp;月]坟
码农就要提升效率!
3楼JordanHmj
还在用webform,微软坑人不倦
Re: hellomans
@JordanHmj,技术总是在进步webform刚出来确实给了开发者开发效率的提升.mvc解耦性更好,但不管咋说都是给开发者带来好处技术,不存在坑不坑的情况吧,兄台!
2楼a14907
用反射真的好吗
1楼胡萝卜星星
MVC这些事情自动帮你做了
  相关解决方案