数据绑定bind()函数属于哪个类?

时间:2011-10-23 12:15:50

标签: c# asp.net data-binding 2-way-object-databinding

单向数据绑定Eval函数属于DataBinder类,可以通过使用{{1调用TemplateControl.Eval方法的DataBinder.Eval方法在页面中访问pnsw!

解析表达式计算对象引用的方法

好的......那么,双向数据绑定GetDataItem函数如何工作?它属于哪个类?

2 个答案:

答案 0 :(得分:1)

据我所知,“Bind”不是一种方法,而是一种语言结构 来源和进一步阅读:http://weblogs.asp.net/leftslipper/archive/2007/06/29/how-asp-net-databinding-deals-with-eval-and-bind-statements.aspx

答案 1 :(得分:1)

我想说,即使使用Reflector,Bind()方法也无处可寻。

---对于诸如TextBoxes(也称为“双向数据绑定”)的读写值,您可以使用Bind()语句。 Bind()语句来自哪里?

具体来说,ASP.NET中没有绑定方法!当ASP.NET解析您的文件并看到您正在使用databinding expression (in the angle-bracket-percent-pound format, "<%# %>")时,它具有特殊情况代码来解析Bind语法并为其生成一些特殊代码。当您使用<%# Bind("Name") %>时,它不是真正的函数调用。

如果ASP.NET解析代码并检测到Bind()语句,它会将语句拆分为两部分。第一部分是单向数据绑定部分,最终只是一个常规的Eval()调用。第二部分是反向部分,通常是"string name = TextBox1.Text"行的一些代码,它从绑定的位置抓取值。

非Bind()数据绑定语句是文字代码(我们在CodeDom中使用CodeSnippetExpressions),因此允许使用您选择的语言中的任意代码。但是,因为ASP.NET必须解析Bind()语句,所以双向数据绑定不支持除Bind()之外的任何内容。例如,以下语法无效,因为它尝试调用任意代码并同时使用Bind():<%# FormatNameHelper(Bind("Name")) %>

双向数据绑定中支持的唯一格式是Bind(“field”)和Bind(“field”,“format string {0}”)。这些语法示例有一些非常小的变体,例如允许使用单引号而不仅仅是双引号。由于ASP.NET支持的某些语言优于另一种格式,因此我们必须支持这两种格式,即使您使用的语言可能只支持一种格式。