單向數據綁定Eval
功能屬於DataBinder
類,並且可以在一個頁面通過TemplateControl.Eval
方法使用GetDataItem
方法來解決對象引用,該表達式與評價調用DataBinder.Eval
方法被訪問,表示不快!databind bind()函數屬於哪個類?
OK ...那麼,雙向數據綁定Bind
函數如何工作?它屬於哪一類?
單向數據綁定Eval
功能屬於DataBinder
類,並且可以在一個頁面通過TemplateControl.Eval
方法使用GetDataItem
方法來解決對象引用,該表達式與評價調用DataBinder.Eval
方法被訪問,表示不快!databind bind()函數屬於哪個類?
OK ...那麼,雙向數據綁定Bind
函數如何工作?它屬於哪一類?
據我所知,「綁定」不是一種方法,而是一種語言結構。
來源和進一步閱讀:http://weblogs.asp.net/leftslipper/archive/2007/06/29/how-asp-net-databinding-deals-with-eval-and-bind-statements.aspx
我想說,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支持的某些語言比其他語言支持一種格式,因此即使您使用的語言只支持一種格式,我們也必須支持這兩種格式。
謝謝,但您的回答與@Svarog發送的鏈接完全相同。 – outlookrperson
好奇地我沒有找到關於此的有用的文章。非常感謝。 – outlookrperson