Version anglaise :http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
La liaison dans ASP.NET Atlas est un moyen puissant de connecter deux objets. (Vous pouvez vous référer à http://dflying.cnblogs.com/archive/2006/04/04/366900.html pour plus d'informations sur la liaison.) La liaison Atlas appliquera automatiquement les propriétés modifiées sur l'objet source à l'attribut spécifié. de l’objet cible. Mais parfois, vous souhaiterez apporter quelques modifications à cette propriété avant de l'appliquer à l'objet cible. Par exemple, lors de l'affichage d'une liste indexée, vous souhaiterez peut-être que l'index commence à incrémenter à partir de 1 au lieu du 0 par défaut en JavaScript. À ce stade, vous devez utiliser Atlas Transformer. Le Transformer dans Atlas est quelque chose comme un pipeline. Il sera inséré dans le processus d'attribution de valeurs des propriétés de l'objet source aux propriétés de l'objet cible, afin d'effectuer le filtrage/décoration/conversion nécessaire. sur les propriétés à attribuer (il s'agit ici d'ajouter 1 à l'attribut source) puis de l'affecter à l'attribut cible.
Atlas fournit des transformateurs intégrés, tels que Ajouter, Multiplier, Comparer, etc. Cependant, dans le développement réel, nous devons dans la plupart des cas définir notre propre transformateur. Familiarisons-nous avec la façon d'écrire un transformateur personnalisé en développant un exemple de CustomBooleanTransformer.
CustomBooleanTransformer est utilisé pour convertir les valeurs booléennes dans notre format personnalisé, tel que Oui/Non ou Completed/InProgress. Si nous choisissons d'utiliser la liaison pour afficher une valeur booléenne à l'utilisateur, alors ce transformateur sera très utile et offrira à l'utilisateur une expérience utilisateur plus conviviale.
En général, la création d'un transformateur comportera les quatre étapes suivantes :
Obtenir la valeur à transformer transmise à partir de l'objet de liaison source. Ici, nous appelons d'abord get_value() pour obtenir la valeur entrante et la convertir en type booléen.
Obtenez les paramètres du transformateur. Le paramètre ici est une chaîne qui peut être divisée en deux parties par une virgule (,). Le booléen true sera converti en première partie et false sera converti en deuxième partie. Si le paramètre transmis est vide, la chaîne par défaut true/false est utilisée à la place.
Effectuez la conversion. Dans cette étape, vous devez utiliser votre propre logique pour convertir la valeur entrante en valeur sortante (généralement en utilisant les paramètres du transformateur obtenus à l'étape précédente). Ici, nous divisons d'abord le paramètre en deux parties avec une virgule (,), puis remplaçons true par la première partie et false par la deuxième partie. Si l’argument ne peut pas être divisé en deux parties, utilisez plutôt vrai/faux.
Pour afficher la valeur convertie, appelez la méthode set_value() pour y parvenir.
Vous trouverez ci-dessous le code JavaScript pour CustomBooleanTransformer, enregistrez-le sous CustomBooleanTransformer.js.
Sys.BindingBase.Transformers.CustomBoolean = function (expéditeur, eventArgs) {
// étape 1, récupère la valeur d'entrée.
var valeur = eventArgs.get_value();
if (typeof(value) != 'booléen') {
valeur = Boolean.parse(valeur);
}
// étape 2, les arguments d'obtention seront utilisés lors de la transformation.
var customString = eventArgs.get_transformerArgument();
if (customString == null || customString == '') {
customString = 'vrai, faux';
}
// étape 3, effectuez la transformation.
var customValues = customString.split(',');
si (customValues.length != 2)
{
customValues[0] = 'vrai';
customValues[1] = 'faux';
}
var nouvelleValue = valeur ? customValues[0] : customValues[1];
// étape 4, définit la valeur transformée comme sortie.
eventArgs.set_value(newValue);
}
OK, testons maintenant ce CustomBooleanTransformer. Ajoutez une case à cocher et une zone de texte à la page et liez-les. Lorsque la case est cochée/décochée, la valeur booléenne convertie correspondante sera affichée dans la zone de texte.
Vous trouverez ci-dessous la définition HTML du fichier ASPX. N'oubliez pas d'ajouter une référence au fichier CustomBooleanTransformer.js dans le ScriptManager.
<atlas:ScriptManager ID="sm1" runat="server">
<Scripts>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</Scripts>
</atlas:ScriptManager>
<input id="myCheckbox" type="checkbox" />
<input id="myTextbox" type="text" />
Vous trouverez ci-dessous la définition du script Atlas. Ici, le transformerArgument est spécifié comme « Oui, Non », afin de convertir la valeur booléenne true en Yes et false en No. <page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<références>
</références>
<composants>
<checkBox id="myCheckbox" />
<textBox id="myTextBox">
<liaisons>
<binding dataContext="myCheckbox" dataPath="checked"
property="text" transform="CustomBoolean" transformerArgument="Oui, Non" />
</liaisons>
</textBox>
</composants>
</page>