繁体   English   中英

Web表单中用户控件的数据绑定最佳实践

[英]Databinding best practice for User Controls in Web Forms

我想知道Web表单中数据绑定的一些最佳做法。

例如,我们有一个控件:

public partial class MyUserControl : UserControl
{
    public override void DataBind()
    {
        //#1
        base.DataBind();
        //#2
    }
}

如果我们希望该控件自动绑定其数据,我们将执行以下操作:

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.DataBind();
    }
}

在代码的第一部分中,如果我们在调用base.DataBind()(#1)之前进行了数据绑定,那么这意味着,例如,如果我们对ListView进行数据绑定,则不必调用ListView.DataBind()因为当我们在控件上调用base.DataBind()时,它将在所有子控件上递归调用DataBind。 同样,我们将无法访问使用数据绑定代码块<%#%>分配给它的控件的任何属性。

如果我们在base.DataBind()(#2)之后对控件进行绑定,那么这意味着DataBind在这些控件上被调用了两次。 一次是在调用base.DataBind()时,第二次是我们被迫调用control.DataBind()。

有人知道我不知道的某种我可以遵循的模式吗?

我在这里有意义吗?

我究竟做错了什么?

编辑:看此页: http : //msdn.microsoft.com/zh-cn/library/w5e5992d.aspx

使用此方法可以将数据从源绑定到服务器控件。 通过数据库查询检索数据集后,通常使用此方法。 该方法主要由控件开发人员使用。 大多数控件会自动执行数据绑定。

似乎最佳实践是自动绑定控件数据。 数据绑定用于当我们显式设置数据源时。

以前,当页面变得复杂并且您依赖用户控件在页面加载事件中绑定其自己的数据时,我曾遇到过问题。 这导致了一些长时间的调试会话,因为无法确切保证控件中的此页面加载事件何时触发。

现在,这就是说,这些页面的设计不是很好,我们不应该遇到这个问题,但是我更喜欢坚持明确的说法,让我的页面告诉子控件何时做他们的事情-您可能希望为避免调用base.DataBind并显式地执行它-您可能还希望不要以这种方式覆盖DataBind方法,而改用另一个名称在控件上调用该方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM