现在有个页面 页面显示的是一个实体(比方说实体名是entity)的详细情况,实体有30多个属性,我在写添加方法的时候,页面的后置代码中总要写如下的 代码:entity en=new entity();
e.name=this.txtname.Text;
e.age=this.txtage.text;
a.address=this.txtaddress.text;
...
...
...等等最后执行添加方法
UserManage.Add(en);
如果一个项目中 很多表的列都有几十个  这样做是不是太费时间了??有没有简单的方法能快速封装实体从而提高开发效率??

解决方案 »

  1.   

    我也是这么写  
    不过我见过实体类将字段封装在构造函数中的写法
    那么初始化得时候就可以直接赋值 entity en=new entity(value1,value2,value3,...);
      

  2.   

    有用过strusts框架的吗 就像struts那样用表单bean帮助程序员获取表单数据的????
      

  3.   

    按LS的说法 .net 在这方面简直和jsp没法比了
      

  4.   

    每种技术都有自己的特点,.net貌似没有现成的办法可以实现LZ的要求,想要智能化高效率那还是改用Ruby on Rails吧
      

  5.   

    其实,说简单它也很简单.
    以前在写ASP的时候,也是头痛这种情况,于是就写了一个很简单的代码生成.基本思路如下:
    1.把该系统的所有数据库表\字段以树的形式展出出来
    2.选择某页面所需要的所有字段
    3.针对这些字段生成各种类型的赋值语句,比如:
      赋值
      fileda.text = xx.fileda;
      filedb.text = xx.filedb;
      ....
      取值
      xx.fileda = fileda.text;
      xx.filedb = filedb.text;
      ....如上,需要使用的时候,拷贝粘贴一下,基本解决问题.当然,我们现在是上升一步了,直接选择字段,设定一些基本参数,根据页面功能直接生成前后台的代码,基本上,只需要修改部分的语法或一些无法智能化操作的代码,象楼主这样的烦恼,基本不可能出现了.
      

  6.   

    楼主,又见面啦。。
    你可以试试listView这个数据控件,当你通过数据源给他一个对象,他自动产生一个表单,如果对象的属性是BOOl类型的产出的表单控件就是单选框,其他的string类型的产生的就是文本框。。所以我上次说你如果想用下拉框的话还要手动处理下。。
    用这个控件只要你的数据源给了方法。。修改和添加都不用一个个的属性<-->控件去赋值了,全部自动的控件值和属性值对应起来了虽然有这么个东西,但我们平时好像很少用到。好像不是很灵活。。还不如自己写个方便,自己写的如果页面有改动,维护比较容易。。
      

  7.   

    你可以在给这些页面上的控件取名的时候,按某种规则将名字和对应的实体的属性关联起来。
    比如 e.name=this.txtname.Text; 就可以把txtname改名为txt_name;
    其他的textbox也类似的起名 txt_xxx;
    然后写一个通用的方法,遍历e下面的所有属性对象,根据属性名字寻找页面上对应的控件,然后赋值,ok。
      

  8.   

    比如 你上面的这个例子就会产生这样的代码:
     <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name")%>'></asp:TextBox>
    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("age")%>'></asp:TextBox>
    我记得在jsp中对象属性映射的是控件的name属性吧
    而asp我觉得比较灵活,只要在数据控件范围内,任何属性都可以绑定,并可以多次绑定
    比如:
    <asp:CheckBox ID="CheckBox1" runat="server" Text='<%# Bind("name")%>' value=
    '<%# Bind("id")%>' visible=<%# Bind("isEnabled")%>我一般在只读的情况下喜欢用Eval("")替换 Bind("")
    不知道别人是否这样。。
    希望能对搂主有所帮助。。
      

  9.   

    大致代码如下: 使用时只需一句 SetValue(e);public T SetValue<T>(T t)
            {
                PropertyInfo[] properties = t.GetType().GetProperties();
                System.Web.UI.Page page = HttpContext.Current.CurrentHandler as System.Web.UI.Page;
                foreach (PropertyInfo property in properties)
                {
                    System.Web.UI.Control control = page.FindControl("txt_" + property.Name);
                    string itemValue = "";
                    if (control != null && control is System.Web.UI.WebControls.TextBox)
                    {
                        itemValue = (control as System.Web.UI.WebControls.TextBox).Text;                }
                    else if (control != null && control is System.Web.UI.WebControls.DropDownList)
                    {
                        itemValue = (control as System.Web.UI.WebControls.DropDownList).SelectedValue;                }                property.SetValue(t, itemValue, null);            }            return t;
            }