读使用反射将业务对象绑定到 ASP.NET 窗体控件有感

原创 2007年09月13日 10:45:00

将页面与实体关联的方法:我也写了一个

编辑控件前台edit.ascx

 

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="edit.ascx.cs" Inherits="edit" %>
<asp:Label ID="Label1" runat="server" Text="编号"></asp:Label>
<asp:TextBox ID="txtID" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text="姓名"></asp:Label>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="密码"></asp:Label>
<asp:TextBox ID="txtPwd" runat="server"></asp:TextBox>
<br />
<asp:Button ID="btnOp" runat="server" Text="操作" />
<asp:Button ID="btnBack" runat="server" Text="返回" />

 

后台代码edit.ascx.cs

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class edit : System.Web.UI.UserControl
...{
    
public int UserId
    
...{
        
set
        
...{
            
this.txtID.Text = value.ToString();
        }

        
get
        
...{
            
if (this.txtID.Text != "")
                
return int.Parse(this.txtID.Text);
            
return 0;
        }

    }

    
public string UserName
    
...{
        
set
        
...{
            
this.txtName.Text = value;
        }

        
get
        
...{
                
return this.txtName.Text;
        }

    }

    
public string Password
    
...{
        
set
        
...{
            
this.txtPwd.Text = value.ToString();
        }

        
get
        
...{
            
return this.txtPwd.Text;
        }

    }

    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
this.btnBack.Attributes.Add("onclick""history.go(-1);");
    }

}

前台显示的后台代码eidt.aspx.cs

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Reflection;

public partial class edit : System.Web.UI.Page
...{
    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
         User user=new User(95,"test","test");
         PropertyInfo[] objProperties 
= user.GetType().GetProperties();
         PropertyInfo[] ctlProperties 
= this.Edit1.GetType().GetProperties();
                    //public static object CopyProperty(object obj1, object obj2)
        //{
        //    Type souType = user.GetType();
        //    Type tarType = this.Edit1.GetType();
        //    PropertyInfo[] pis = souType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
        //    if (null != pis)
        //    {
        //        foreach (PropertyInfo pi in pis)
        //        {
        //            string propertyName = pi.Name;
        //            PropertyInfo pit = tarType.GetProperty(propertyName);
        //            if (pit != null)
        //            {
        //                pit.SetValue(obj2, pi.GetValue(obj1, null), null);
        //            }
        //        }
        //    }
        //    return obj2;
        //}以下代码可被以上注释的代码替换
         
foreach (PropertyInfo objProperty in objProperties)
         
...{
             
foreach (PropertyInfo ctlProperty in ctlProperties)
             
...{
                 
if (objProperty.Name == ctlProperty.Name)
                 
...{
                     ctlProperty.SetValue(
this.Edit1, objProperty.GetValue(user, null), null);
                     break;

                 }

             }

         }

    }

}

前台eidt.aspx代码

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="edit.aspx.cs" Inherits="edit" Debug="true" %>

<%@ Register Src="edit.ascx" TagName="edit" TagPrefix="uc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Untitled Page</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<uc1:edit id="Edit1" runat="server">
        
</uc1:edit></div>
    
</form>
</body>
</html>

实体类代码:

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/**//// <summary>
/// Summary description for User
/// </summary>

public class User
...{
    
"Fields and Properties"#region "Fields and Properties"
    
private int userId;
    
private string userName;
    
private string password;
    
public int UserId
    
...{
        
get ...return userId; }
        
set ...{ userId = value; }
    }

    
public string UserName
    
...{
        
get ...return userName; }
        
set ...{ userName = value; }
    }

    
public string Password
    
...{
        
get ...return password; }
        
set ...{ password = value; }
    }

    
#endregion

    
"Constructors"#region "Constructors"
    
public User() ...{ }
    
public User(int id, string name, string password)
    
...{
        
this.UserId = id;
        
this.UserName = name;
        
this.Password = password;
    }

    
#endregion

}

以上理解失误:请见http://blog.csdn.net/beimuaihui/archive/2007/09/14/1785035.aspx

ASP.NET-008—JS绑定控件事件

界面上的事件一般可以通过控件自带的事件属性添加事件。其实还有一个方式,就是让JS来给控件绑定事件,这样一来就可以实现控件的事件动态进行变化,在实现功能的时候会更加方便。JS绑定控件事件的格式如下: $...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2014年03月31日 22:32
  • 3923

【ASP.NET】——数据绑定和数据控件

梵蒂冈讽德诵功上的
  • u013034793
  • u013034793
  • 2015年07月12日 20:37
  • 773

ASP.Net数据绑定控件小结

数据绑定作为ASP.Net中较为重要的一个知识点,其中涉及到了三个重要的数据绑定控件,Repeater DataList 和GridView(DataGrid)。 Repeater控件:   特点: ...
  • zllaptx4869
  • zllaptx4869
  • 2013年10月09日 21:59
  • 1708

【Asp.net之旅】--数据绑定控件之DataList

       上篇博客讨论了Repeater控件的基本用法,它是最基本的数据绑定控件,只提供了数据绑定的功能,熟练运用Repeater控件后,其它类似的数据绑定控件就很简单了。接着我们上篇博客的内...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2014年03月28日 09:28
  • 24453

ASP.NET中的DataView用法详解

DataView表示用于排序、筛选、搜索、编辑和导航的DataTable的可绑定数据的自定义视图。 DataView的功能类似于数据库的视图,他是数据源DataTable的封装对象,可以对数据源进行...
  • wangzl1163
  • wangzl1163
  • 2015年11月12日 09:38
  • 2520

【Asp.net之旅】--数据绑定控件之ListView

对于数据绑定控件来说Repeater控件是最基础的了,它因为最原始所以受到广大开发人员的喜爱,对有经验程序员来说在开发时往往采用Repeater,因为它使用灵活,稳定,不会产生恶意代码,并且效率高。对...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2014年04月05日 08:21
  • 14511

读《人类简史》有感

我是从窦文涛在其节目《圆桌派》中谈人工智能的时候,了解到了尤瓦尔.赫拉里这个人的。瞬间被他像神一般俯瞰众生的视角所吸引,于是买了电子版的《人类简史》详读。前前后后,零零碎碎大概用了1周的时间,读完了整...
  • chrisjingu
  • chrisjingu
  • 2017年08月07日 17:04
  • 249

Android 反射获得控件对象

例: @ViewInject(R.id.pull_to_refresh_listview) private PullToRefreshListView pullToRefreshListView;...
  • anykaa
  • anykaa
  • 2015年12月30日 21:05
  • 1786

ASP.NET——GridView控件绑定数据

ASP.NET提供了许多种数据服务器控件,用于在Web页面中显示数据库中的表数据,GridView控件就是其中之一。这个控件和我们以前学过的DataGridView控件几乎是一样的,所以对GridVi...
  • zjx86320
  • zjx86320
  • 2014年07月25日 15:42
  • 12990

C#开发学习笔记:动态绑定控件事件

C#开发学习笔记:控件动态订阅事件
  • JustWantToFly
  • JustWantToFly
  • 2016年07月26日 09:01
  • 3239
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读使用反射将业务对象绑定到 ASP.NET 窗体控件有感
举报原因:
原因补充:

(最多只允许输入30个字)