什么时候应该使用Page.DataBind()与Control.DataBind()?

Jas*_*kan 19 asp.net data-binding

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

这两个电话之间有什么特别的区别吗?是否有时候应该优先考虑另一个?

Joh*_*ers 11

Page.DataBind Control.DataBind.Page班级和TemplateControl班级都不会覆盖Control.DataBind.

Control.DataBind除了调用OnDataBinding控件之外,它只需要调用DataBind每个子控件.

  • 还有我今天学到的新东西 - 我没有意识到从System.Web.UI.Control派生的System.Web.UI.Page.谢谢. (2认同)

Law*_*ley 8

对于之间的选择Page.DataBind()Control.DataBind(),这里是微软的指导:

"两种方法的工作方式类似.主要区别在于Page.DataBind调用方法后所有数据源都绑定到服务器控件.在显式调用DataBindWeb服务器控件的方法或调用之前,不会向控件呈现数据.页面级Page.DataBind方法.通常,从事件中调用Page.DataBind(或DataBind)Page_Load."

有些情况下,您需要单独指定控件数据绑定,具体取决于当前页面方案.有关控制绑定控件和控件绑定的详细控制级别,我选择控制级DataBind()方法.


Chr*_*ris 7

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

<form id="form1" runat="server"><%#HtmlUtility.HtmlEncode(MyProperty.ToString())%></form>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有特定的控件来调用.DataBind() - 页面本身就是控件.事实上,调用Page.DataBind()也将在所有子控件上调用DataBind(),因此如果您已经在执行Page.DataBind(),则不需要单独绑定控件的数据.