4

我已经看到 BindableAttribute 用于装饰自定义控件中的公共属性。

MSDN简要提到它提供了在设计时控制绑定方向以及是否支持绑定的能力。

public class MyControl : Panel
{
    [Bindable(BindableSupport.No, BindingDirection.OneWay)]
    public string MyString { get; set; }
}

var myControl = new MyControl();
var myString = myControl.MyString;

问题:

1) 我设置BindableSupport为否,但我仍然可以在标记 (.aspx) 中执行此操作。那有什么BindableSupport影响呢?它是否隐藏了工具箱中的属性?

<cc:MyControl runat="server" MyString="something" />

2)在自定义控件和ASP.NET的上下文中,单向绑定和双向绑定是如何工作的?

将不胜感激任何投入。

4

2 回答 2

1

到目前为止我的发现:

1)BindableSupport与 ASP.NET 提供的数据绑定功能有关。例如Page.DataBind(), <%# Bind("MyProperty") %>,<%# Eval ("MyProperty") %>等等。+1 @walther 的回答。

2) ASP.NET 中的双向绑定是在回发时保留对数据绑定值的修改的能力。此SO 线程提供了更多详细信息。Bind是双向的,Eval而是单向的。

于 2012-06-27T17:08:30.483 回答
0

我相信 MSDN 对此很清楚。在你看来它可能很简短,但它已经足够了。此属性用于 BINDING。将字符串分配给您的变量不被视为绑定。

这是例如绑定:

myGridView.DataSource = myList;
myGridView.DataBind();

这不是:

myGridView.ID = "blablabla";

请参阅此链接以获取更多信息,不要在此处找到复制现有学习资源的理由...

http://msdn.microsoft.com/en-us/library/ms752347.aspx

更新:

对于 asp.net,此链接可能更具说明性:

http://www.asp.net/ajaxlibrary/HOW%20TO%20Create%20an%20Editable%20View%20with%20Two-Way%20Data%20Binding.ashx

于 2012-06-27T15:53:39.477 回答