现在有个页面 页面显示的是一个实体(比方说实体名是entity)的详细情况,实体有30多个属性,我在写添加方法的时候,页面的后置代码中总要写如下的 代码:entity en=new entity();
e.name=this.txtname.Text;
e.age=this.txtage.text;
a.address=this.txtaddress.text;
...
...
...等等最后执行添加方法
UserManage.Add(en);
如果一个项目中 很多表的列都有几十个 这样做是不是太费时间了??有没有简单的方法能快速封装实体从而提高开发效率??
e.name=this.txtname.Text;
e.age=this.txtage.text;
a.address=this.txtaddress.text;
...
...
...等等最后执行添加方法
UserManage.Add(en);
如果一个项目中 很多表的列都有几十个 这样做是不是太费时间了??有没有简单的方法能快速封装实体从而提高开发效率??
不过我见过实体类将字段封装在构造函数中的写法
那么初始化得时候就可以直接赋值 entity en=new entity(value1,value2,value3,...);
以前在写ASP的时候,也是头痛这种情况,于是就写了一个很简单的代码生成.基本思路如下:
1.把该系统的所有数据库表\字段以树的形式展出出来
2.选择某页面所需要的所有字段
3.针对这些字段生成各种类型的赋值语句,比如:
赋值
fileda.text = xx.fileda;
filedb.text = xx.filedb;
....
取值
xx.fileda = fileda.text;
xx.filedb = filedb.text;
....如上,需要使用的时候,拷贝粘贴一下,基本解决问题.当然,我们现在是上升一步了,直接选择字段,设定一些基本参数,根据页面功能直接生成前后台的代码,基本上,只需要修改部分的语法或一些无法智能化操作的代码,象楼主这样的烦恼,基本不可能出现了.
你可以试试listView这个数据控件,当你通过数据源给他一个对象,他自动产生一个表单,如果对象的属性是BOOl类型的产出的表单控件就是单选框,其他的string类型的产生的就是文本框。。所以我上次说你如果想用下拉框的话还要手动处理下。。
用这个控件只要你的数据源给了方法。。修改和添加都不用一个个的属性<-->控件去赋值了,全部自动的控件值和属性值对应起来了虽然有这么个东西,但我们平时好像很少用到。好像不是很灵活。。还不如自己写个方便,自己写的如果页面有改动,维护比较容易。。
比如 e.name=this.txtname.Text; 就可以把txtname改名为txt_name;
其他的textbox也类似的起名 txt_xxx;
然后写一个通用的方法,遍历e下面的所有属性对象,根据属性名字寻找页面上对应的控件,然后赋值,ok。
<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("")
不知道别人是否这样。。
希望能对搂主有所帮助。。
{
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;
}