ASP.NET偷懒大法二

上篇提到都流行orm了,后台都有代码生成器了,难道前台还要自己写代码吗?今天就说说利用反射机制自动绑定数据持久层的类吧!

 

protected override void OnItemDataBound(RepeaterItemEventArgs e)
{
foreach (Control var in e.Item.Controls)
{
Type tt 
= e.Item.DataItem.GetType();
System.Reflection.PropertyInfo _proInfo 
= tt.GetProperty(var.ID);
 
if (_proInfo != null)
{
text 
= _proInfo.GetValue(e.Item.DataItem, null== null ? string.Empty : _proInfo.GetValue(e.Item.DataItem, null).ToString();
}
}
}

其实核心就这一段代码,首先判断绑定的实体类的类型。然后通过控件的ID找到对应实体类中同名的属性,并且获得他的值。

其实这个太简单啦没啥好写的。不过这里有一个技巧。如果有个项目大部分列表中出现人员ID的时候就自动的转换成人员名称并且鼠标点击的时候弹出一个页面。这时候可以写一个接口来实现代码的重用。

public interface ICustomItem
{
    
object DataItem{ getset;}
}

然后再上面的循环中加入

if (var is ICustomItem)
{
  (var 
as ICustomItem).DataItem = e.Item.DataItem;
}

在具体的项目中只要实现这个接口,这个Repeater就会按照你的要求自动的绑定数据并显示出来啦。

顺便说一下:其实GirdView也可以实现自动绑定的功能,但我总觉得GirdView太庞大了,做Web前台的话实在是吃不消。所以我很喜欢Repeater这种轻量级的。

posted @ 2008-06-16 11:16  克隆  阅读(411)  评论(0编辑  收藏  举报