解决ObjectDataSource不能依赖注入NHibernate实体问题

用ObjectDataSource和GridView一类的服务器控件,确实可以做到很oop(不过个人更喜欢和Repeater绑定,就是有些麻烦,这个很快)

但如果在多层框架中应用需要用到依赖注入,ObjectDataSource需要绑定到接口上。

 ObjectDataSource只支持类,不能实例化接口。这样就会导致多层结构的依赖性。

 

google半天,终于找到,只要如下使用就可以了。

 

        protected IBLLTestUser  bll = BLLFactory.Create("IBLLTestUser") as IBLLTestUser;
 

        protected void odsTestUser_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = bll;
        } 

 这样就可以传入实例了。但界面绑定还是需要调用原始类才能自动生成界面元素,有点不爽,不过这个影响不大,因为下层变化了,只要注入就可以了,和原来的没关系,只是方便页面绑定生成。和ilist<t>这样的NHibernate实体一道使用可以自动生成gridview的界面字段。下面是可以生成GridView全部功能,包括分页,修改,删除,排序时的ObjectDataSource的设置。


 

未使用 ObjectDataSource前GridView,只能手工绑定,相当麻烦,使用ObjectDataSource后GridView对应的NHibernate实体属性就自动带出来了,如下图对比。

 

 

 

 

 

posted @ 2010-01-10 16:27  无色  阅读(445)  评论(0编辑  收藏  举报