Asp.net 什么时候应该使用Page.DataBind()而不是Control.DataBind()?

Asp.net 什么时候应该使用Page.DataBind()而不是Control.DataBind()?,asp.net,data-binding,Asp.net,Data Binding,在ASP.NET中,可以单独绑定控件(即GridView1.DataBind()),也可以调用Page.DataBind()绑定页面上的所有控件 这两个电话有什么特别的区别吗?在某些情况下,一个应该优先于另一个吗?在ASP.NET页面中,您可以直接绑定到页面代码隐藏类的公共/受保护属性。例如: <form id="form1" runat="server"><%#HtmlUtility.HtmlEncode(MyProperty.ToString())%></for

在ASP.NET中,可以单独绑定控件(即
GridView1.DataBind()
),也可以调用
Page.DataBind()
绑定页面上的所有控件


这两个电话有什么特别的区别吗?在某些情况下,一个应该优先于另一个吗?

在ASP.NET页面中,您可以直接绑定到页面代码隐藏类的公共/受保护属性。例如:

<form id="form1" runat="server"><%#HtmlUtility.HtmlEncode(MyProperty.ToString())%></form>


在本例中,没有可调用的特定控件。DataBind()页本身就是控件。恰巧调用Page.DataBind()也会对所有子控件调用DataBind(),因此,如果您已经在执行Page.DataBind(),则无需单独对控件进行数据绑定。

要在
Page.DataBind()
Control.DataBind()
之间进行选择,Microsoft:

“两种方法的工作原理相似 不同之处在于,所有数据源 已绑定到其服务器控件 在
页面之后。使用DataBind
方法 调用。没有数据呈现到 控件,直到显式调用 Web的
DataBind
方法 服务器控件或,直到调用 页面级别
page.DataBind
方法。 通常,
Page.DataBind
(或
DataBind
) 从
页面加载
事件调用。”


根据当前页面场景,有时需要单独指定控件数据绑定。对于绑定哪些控件以及何时绑定控件的详细控制级别,我选择控制级别
DataBind()
方法。

Page.DataBind
control.DataBind
页面
类和
模板控件
类都不会覆盖
控件.数据绑定


Control.DataBind
只对控件调用
OnDataBinding
,然后对每个子控件调用
DataBind

这不是对两个调用之间的细微差别的直接回答,而是 关于
DataBind()
vs
Page.DataBind()

我花了整整一天的时间来解释为什么大型Web应用程序中的Ajax调用和事件会被破坏(
ItemCommand
没有在回调和回发、丢失引用等情况下引发)

原因是我有一个ASCX,它调用了
Page.DataBind()
,而不是本身的
DataBind()

当您找到它时,它可能看起来很明显,但当您处理一个超过500000行的应用程序中的奇怪行为以及母版/页面/控件中的大量复杂性时,它就不是了。
因此,如果您在错误的位置调用它,请小心
Page.DataBind()

这就是为什么我问:)-以防万一,有一些我不知道的特殊情况。还有我今天学到的新东西-我没有意识到System.Web.UI.Page派生自System.Web.UI.Control。谢谢