Английская версия:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
Привязка в ASP.NET Atlas — это мощный способ соединения двух объектов. (Вы можете обратиться к http://dflying.cnblogs.com/archive/2006/04/04/366900.html для получения дополнительной информации о привязке.) Привязка Atlas автоматически применит измененные свойства исходного объекта к указанному атрибуту. целевого объекта. Но иногда вам потребуется внести некоторые изменения в это свойство, прежде чем применять его к целевому объекту. Например, при отображении индексированного списка вы можете захотеть, чтобы индекс начал увеличиваться с 1 вместо стандартного 0 в JavaScript. На этот раз вам нужно использовать Atlas Transformer. Трансформер в Атласе — это что-то вроде конвейера. Он будет вставлен в процесс присвоения значений свойств исходного объекта свойствам целевого объекта, чтобы выполнить необходимую фильтрацию/декорацию/преобразование. на свойствах, которые необходимо назначить (здесь нужно добавить 1 к исходному атрибуту), а затем присвоить его целевому атрибуту.
Atlas предоставляет некоторые встроенные преобразователи, такие как «Сложение», «Умножение», «Сравнение» и т. д. Однако в реальной разработке в большинстве случаев нам необходимо определить собственный преобразователь. Давайте познакомимся с тем, как написать собственный преобразователь, на примере CustomBooleanTransformer.
CustomBooleanTransformer используется для преобразования логических значений в наш собственный формат, например Да/Нет или Завершено/В процессе. Если мы решим использовать привязку для отображения пользователю логического значения, то этот преобразователь будет очень полезен и обеспечит пользователю более дружелюбный пользовательский интерфейс.
В общем, создание преобразователя состоит из следующих четырех шагов:
Получите значение, подлежащее преобразованию, переданное из исходного объекта привязки. Здесь мы сначала вызываем get_value(), чтобы получить входящее значение и преобразовать его в логический тип.
Получите параметры трансформатора. Параметр здесь представляет собой строку, которую можно разделить запятой (,) на две части. Логическое значение true будет преобразовано в первую часть, а значение false — во вторую часть. Если переданный параметр пуст, вместо него используется строка по умолчанию true/false.
Сделайте преобразование. На этом этапе вы должны использовать собственную логику для преобразования входного значения в исходящее значение (обычно с использованием параметров преобразователя, полученных на предыдущем шаге). Здесь мы сначала разделяем параметр на две части с помощью запятой (,), затем заменяем true первой частью и false второй частью. Если аргумент не может быть разделен на две части, вместо этого используйте true/false.
Чтобы вывести преобразованное значение, вызовите метод set_value() для его достижения.
Ниже приведен код JavaScript для CustomBooleanTransformer, сохраните его как CustomBooleanTransformer.js.
Sys.BindingBase.Transformers.CustomBoolean = function(sender, eventArgs) {
// шаг 1, получаем входное значение.
значение var = eventArgs.get_value();
if (typeof(value) != 'boolean') {
значение = Boolean.parse(значение);
}
// шаг 2, получение аргументов будет использоваться при преобразовании.
вар customString = eventArgs.get_transformerArgument();
if (customString == null || customString == '') {
customString = 'истина, ложь';
}
// шаг 3, выполняем преобразование.
var customValues = customString.split(',');
если (customValues.length!= 2)
{
customValues[0] = 'истина';
customValues[1] = 'ложь';
}
вар newValue = значение? customValues[0]: customValues[1];
// шаг 4, устанавливаем преобразованное значение в качестве вывода.
eventArgs.set_value(newValue);
}
Хорошо, теперь давайте проверим этот CustomBooleanTransformer. Добавьте на страницу флажок и текстовое поле и привяжите их. Когда флажок установлен/снят, соответствующее преобразованное логическое значение будет отображаться в текстовом поле.
Ниже приведено определение HTML из файла ASPX. Не забудьте добавить ссылку на файл CustomBooleanTransformer.js в ScriptManager.
<atlas:ScriptManager ID="sm1" runat="server">
<Скрипты>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</скрипты>
</atlas:ScriptManager>
<input id="myCheckbox" type="checkbox" />
<input id="myTextbox" type="text" />
Ниже приведено определение сценария Atlas. Здесь TransformArgument указан как «Да,Нет», чтобы преобразовать логическое значение true в «Да» и false в «Нет». <page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<ссылки>
</ссылки>
<компоненты>
<checkBox id="myCheckbox" />
<textBox id="myTextBox">
<привязки>
<binding dataContext="myCheckbox" dataPath="проверено"
property="text" Transform="CustomBoolean" TransformerArgument="Да,Нет" />
</привязки>
</textBox>
</компоненты>
</страница>