在自定义控件的属性上添加BindableAttribute的目的是什么?

时间:2012-06-27 15:28:03

标签: c# asp.net vb.net custom-controls

我已经看到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设置为No,但我仍然可以在标记(.aspx)中执行此操作。 BindableSupport会影响什么?它是否隐藏了工具箱中的属性?

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

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

非常感谢任何投入。

2 个答案:

答案 0 :(得分:1)

到目前为止我的发现:

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

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

答案 1 :(得分: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