Я хотел бы сказать, что метод Bind () нигде не был найден, даже с использованием Reflector.
--- для значений чтения-записи, таких как 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 () являются буквальным кодом (мы используем CodeSnippetExpressions в CodeDom), поэтому допускается произвольный код на выбранном вами языке. Однако, поскольку ASP.NET должен анализировать операторы Bind (), двусторонняя привязка данных не поддерживает ничего, кроме Bind (). Например, следующий синтаксис недопустим, поскольку он пытается вызвать произвольный код и одновременно использовать Bind (): <%# FormatNameHelper(Bind("Name")) %>
Единственными поддерживаемыми форматами при двусторонней привязке данных являются Bind («поле») и Bind («поле», «строка формата {0}»). В этих примерах синтаксиса есть несколько очень незначительных изменений, например, допускается использование одинарных кавычек, а не просто двойных кавычек. Поскольку некоторые языки, поддерживаемые ASP.NET, предпочитают один формат другим, мы должны поддерживать оба формата, хотя используемый вами язык может поддерживать только один.