Englische Version:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
Die Bindung in ASP.NET Atlas ist eine leistungsstarke Möglichkeit, zwei Objekte zu verbinden. (Weitere Informationen zur Bindung finden Sie unter http://dflying.cnblogs.com/archive/2006/04/04/366900.html .) Die Atlas-Bindung wendet die geänderten Eigenschaften des Quellobjekts automatisch auf das angegebene Attribut an des Zielobjekts. Manchmal möchten Sie jedoch einige Änderungen an dieser Eigenschaft vornehmen, bevor Sie sie auf das Zielobjekt anwenden. Wenn Sie beispielsweise eine indizierte Liste anzeigen, möchten Sie möglicherweise, dass der Index bei 1 beginnt und nicht bei der Standardeinstellung 0 in JavaScript. Zu diesem Zeitpunkt müssen Sie Atlas Transformer verwenden. Der Transformer in Atlas ist so etwas wie eine Pipeline. Er wird in den Prozess der Zuweisung von Werten von den Eigenschaften des Quellobjekts zu den Eigenschaften des Zielobjekts eingefügt, um die notwendige Filterung/Dekoration/Konvertierung durchzuführen auf die zuzuweisenden Eigenschaften (hier: Addieren Sie 1 zum Quellattribut) und weisen Sie sie dann dem Zielattribut zu.
Atlas bietet einige integrierte Transformatoren wie Addieren, Multiplizieren, Vergleichen usw. In der tatsächlichen Entwicklung müssen wir jedoch in den meisten Fällen unseren eigenen Transformator definieren. Machen wir uns mit dem Schreiben eines benutzerdefinierten Transformators vertraut, indem wir ein Beispiel für CustomBooleanTransformer entwickeln.
CustomBooleanTransformer wird verwendet, um boolesche Werte in unser benutzerdefiniertes Format zu konvertieren, z. B. Ja/Nein oder Abgeschlossen/In Bearbeitung. Wenn wir uns für die Bindung entscheiden, um dem Benutzer einen booleschen Wert anzuzeigen, ist dieser Transformator sehr nützlich und bietet dem Benutzer eine benutzerfreundlichere Benutzererfahrung.
Im Allgemeinen umfasst die Erstellung eines Transformators die folgenden vier Schritte:
Abrufen des zu transformierenden Werts, der vom Quellbindungsobjekt übergeben wird. Hier rufen wir zunächst get_value() auf, um den eingehenden Wert abzurufen und ihn in den booleschen Typ umzuwandeln.
Ermitteln Sie die Parameter des Transformators. Der Parameter ist hier eine Zeichenfolge, die durch ein Komma (,) in zwei Teile geteilt werden kann. Der boolesche Wert true wird in den ersten Teil und false in den zweiten Teil umgewandelt. Wenn der übergebene Parameter leer ist, wird stattdessen die Standardzeichenfolge true/false verwendet.
Führen Sie die Konvertierung durch. In diesem Schritt sollten Sie Ihre eigene Logik verwenden, um den eingehenden Wert in den ausgehenden Wert umzuwandeln (normalerweise unter Verwendung der im vorherigen Schritt erhaltenen Parameter des Transformators). Hier teilen wir den Parameter zunächst mit einem Komma (,) in zwei Teile auf und ersetzen dann true durch den ersten Teil und false durch den zweiten Teil. Wenn das Argument nicht in zwei Teile geteilt werden kann, verwenden Sie stattdessen wahr/falsch.
Um den konvertierten Wert auszugeben, rufen Sie die Methode set_value() auf, um ihn zu erreichen.
Unten finden Sie den JavaScript-Code für CustomBooleanTransformer. Speichern Sie ihn als CustomBooleanTransformer.js.
Sys.BindingBase.Transformers.CustomBoolean = function(sender, eventArgs) {
// Schritt 1, Eingabewert abrufen.
var value = eventArgs.get_value();
if (typeof(value) != 'boolean') {
value = Boolean.parse(value);
}
// Schritt 2: Get-Argumente werden bei der Transformation verwendet.
var customString = eventArgs.get_transformerArgument();
if (customString == null || customString == '') {
customString = 'true,false';
}
// Schritt 3, führen Sie die Transformation durch.
var customValues = customString.split(',');
if (customValues.length != 2)
{
customValues[0] = 'true';
customValues[1] = 'false';
}
var newValue = value ? customValues[0] : customValues[1];
// Schritt 4, setze den transformierten Wert als Ausgabe.
eventArgs.set_value(newValue);
}
OK, jetzt testen wir diesen CustomBooleanTransformer. Fügen Sie der Seite ein Kontrollkästchen und ein Textfeld hinzu und binden Sie diese. Wenn das Kontrollkästchen aktiviert/deaktiviert ist, wird der entsprechende konvertierte boolesche Wert im Textfeld angezeigt.
Unten finden Sie die HTML-Definition aus der ASPX-Datei. Vergessen Sie nicht, im ScriptManager einen Verweis auf die Datei CustomBooleanTransformer.js hinzuzufügen.
<atlas:ScriptManager ID="sm1" runat="server">
<Skripte>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</Skripte>
</atlas:ScriptManager>
<input id="myCheckbox" type="checkbox" />
<input id="myTextbox" type="text" />
Unten finden Sie die Atlas-Skriptdefinition. Hier wird das TransformerArgument als „Yes,No“ angegeben, um den booleschen Wert „true“ in „Yes“ und „false“ in „Nein“ umzuwandeln. <page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<Referenzen>
</references>
<Komponenten>
<checkBox id="myCheckbox" />
<textBox id="myTextBox">
<Bindungen>
<binding dataContext="myCheckbox" dataPath="checked"
property="text" transform="CustomBoolean" TransformerArgument="Yes,No" />
</bindings>
</textBox>
</components>
</page>