gpt4 book ai didi

c# - Web 窗体中用户控件的数据绑定(bind)最佳实践

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:08 25 4
gpt4 key购买 nike

我想知道在 Web 表单中进行数据绑定(bind)的一些最佳实践。

例如我们有一个控件:

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

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

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

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

分配给它的控件的任何属性

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

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

我说的有道理吗?

我做错了什么?

编辑:查看此页面: http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

Use this method to bind data from a source to a server control. This method is commonly used after retrieving a data set through a database query. The method is primarily used by control developers; most controls perform data binding automatically.

看来最好的做法是自动绑定(bind)控件数据。数据绑定(bind)适用于我们显式设置数据源的情况。

最佳答案

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

也就是说,这些页面设计得不太好,我们不应该遇到这个问题,但我更愿意坚持显式,让我的页面告诉子控件何时做他们的事情 -您可能希望避免调用 base.DataBind 并改为显式调用 - 您可能还希望不以这种方式重写 DataBind 方法,而是通过另一个名称在您的控件上调用该方法。

关于c# - Web 窗体中用户控件的数据绑定(bind)最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2370032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com