Asp.net 什么时候应该使用Page.DataBind()而不是Control.DataBind()?
在ASP.NET中,可以单独绑定控件(即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
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()
vsPage.DataBind()
我花了整整一天的时间来解释为什么大型Web应用程序中的Ajax调用和事件会被破坏(ItemCommand
没有在回调和回发、丢失引用等情况下引发)
原因是我有一个ASCX,它调用了Page.DataBind()
,而不是本身的DataBind()
当您找到它时,它可能看起来很明显,但当您处理一个超过500000行的应用程序中的奇怪行为以及母版/页面/控件中的大量复杂性时,它就不是了。
因此,如果您在错误的位置调用它,请小心Page.DataBind()
这就是为什么我问:)-以防万一,有一些我不知道的特殊情况。还有我今天学到的新东西-我没有意识到System.Web.UI.Page派生自System.Web.UI.Control。谢谢