2011-10-23 52 views
1

單向數據綁定Eval功能屬於DataBinder類,並且可以在一個頁面通過TemplateControl.Eval方法使用GetDataItem方法來解決對象引用,該表達式與評價調用DataBinder.Eval方法被訪問,表示不快!databind bind()函數屬於哪個類?

OK ...那麼,雙向數據綁定Bind函數如何工作?它屬於哪一類?

回答

1

我想說,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"的某些代碼的某些代碼,它從綁定的位置抓取值。非綁定()數據綁定語句是文字代碼(我們在CodeDom中使用CodeSnippetExpressions),因此允許您選擇的語言中的任意代碼。但是,因爲ASP.NET必須解析Bind()語句,所以雙向數據綁定不支持除Bind()之外的任何其他功能。例如,以下語法無效,因爲它嘗試調用任意代碼並同時使用Bind():<%# FormatNameHelper(Bind("Name")) %>

雙向數據綁定中支持的唯一格式是Bind(「field」)和Bind(「字段「,」格式字符串{0}「)。這些語法示例有一些非常小的變體,例如允許使用單引號而不是雙引號。由於ASP.NET支持的某些語言比其他語言支持一種格式,因此即使您使用的語言只支持一種格式,我們也必須支持這兩種格式。

+0

謝謝,但您的回答與@Svarog發送的鏈接完全相同。 – outlookrperson