2011-01-13 58 views
0

我有一个传统的解决方案,所有的DataSource都在所有.aspx页面的标记中定义。我遇到的问题是,DataSource因为在页面,控件中使用而被多次实例化...我想要的是让NInject处理DataSource的实例,所以这种情况不会发生。我已经得到了那部分工作,但是当DataSource在代码隐藏中而不是在标记中定义时,Page属性未在DataSource上设置,有人知道为什么吗?与代码隐藏相比,在标记中声明DataSource时的区别?

一个简单的解决方案是将Page属性设置为基类或其他东西,但我认为属性应该在那里,并且想知道为什么。

回答

1

您必须在设置后致电DataBind()

WebControl1.DataSource = something; 
WebControl1.DataBind(); 
+0

谢谢你的回答,这可能对其他人有用,但这不是我所要求的。我问为什么'Page`属性没有设置。 – 2011-01-13 11:06:27

+0

这可能是解决方案的一部分,我不是100%确定我是如何解决它的,但是我可能在设置DataSource属性时使用实际的`DataSource`,而不是`DataSource`中的一个方法。 – 2011-01-21 11:38:55

0

它可能与页面生命周期中实例化的时间点有关吗?你能监视(调试)后面代码中的实例吗?你在后面的代码中使用哪种回调?如果您使用的是后面的控件代码,则Page属性可能不会设置为。因此,选择稍后的回调 - 控件已添加到某个页面后。