如何停止Page.DataBind()的递归调用?

时间:2012-08-01 13:33:02

标签: c# asp.net .net asp.net-4.0

我的代码隐藏中有一个公共属性,我想在.aspx页面中将它绑定到我的控件。如果我使用Page.DataBind()它可以工作,但我不想使用它,因为这会导致递归数据绑定到所有控件。

即使Page.DataBind()有一个重载的方法接受布尔值,表明我是否想要递归地调用它,它本来是一个更好的选择,但目前它只会因递归而降低性能。

我唯一的目标是将代码隐藏页面中的公共/受保护属性绑定到我的.aspx页面。还有更好的选择吗?

2 个答案:

答案 0 :(得分:3)

我猜您的绑定代码类似于

<%# MyProperty %>

只有在您拨打Page.DataBind()但是如果您写下:

时,才会发生这种绑定
<%= MyProperty %>

然后您不必致电Page.DataBind()

答案 1 :(得分:2)

接受的答案适用于简单显示值,但不适用于在服务器标签中使用数据绑定值,例如

<asp:Literal Visible='<%# IsNewApplication %>' runat="server">New Application</asp:Literal>

我发现解决此问题的唯一方法是使用PlaceHolder控件来隔离可绑定标记的块,然后在DataBind()上调用PlaceHolder

由您来决定这是否比仅仅在代码中设置可见性更难或更合适!