Versión en inglés:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
La vinculación en ASP.NET Atlas es una forma poderosa de conectar dos objetos. (Puede consultar http://dflying.cnblogs.com/archive/2006/04/04/366900.html para obtener más información sobre el enlace). El enlace Atlas aplicará automáticamente las propiedades modificadas en el objeto de origen al atributo especificado. del objeto objetivo. Pero a veces querrás realizar algunas modificaciones a esta propiedad antes de aplicarla al objeto de destino. Por ejemplo, al mostrar una lista indexada, es posible que desee que el índice comience a incrementarse desde 1 en lugar del 0 predeterminado en JavaScript. En este momento necesitas usar Atlas Transformer. El Transformador en Atlas es algo así como una tubería. Se insertará en el proceso de asignación de valores de las propiedades del objeto de origen a las propiedades del objeto de destino, para poder realizar el filtrado/decoración/conversión necesario. en las propiedades que se asignarán (aquí es Agregar 1 al atributo de origen) y luego asignarlo al atributo de destino.
Atlas proporciona algunos transformadores integrados, como sumar, multiplicar, comparar, etc. Sin embargo, en el desarrollo real, en la mayoría de los casos necesitamos definir nuestro propio transformador. Familiaricémonos con cómo escribir un transformador personalizado desarrollando un ejemplo de CustomBooleanTransformer.
CustomBooleanTransformer se utiliza para convertir valores booleanos a nuestro formato personalizado, como Sí/No o Completado/En curso. Si elegimos utilizar el enlace para mostrar un valor booleano al usuario, entonces este transformador será muy útil y le brindará al usuario una experiencia de usuario más amigable.
En general, la creación de un transformador tendrá los siguientes cuatro pasos:
Obtener el valor que se va a transformar pasado desde el objeto de enlace de origen. Aquí primero llamamos a get_value() para obtener el valor entrante y convertirlo al tipo booleano.
Obtenga los parámetros del transformador. El parámetro aquí es una cadena que se puede dividir en dos partes mediante una coma (,). El valor booleano verdadero se convertirá a la primera parte y falso se convertirá a la segunda parte. Si el parámetro pasado está vacío, en su lugar se utiliza la cadena predeterminada verdadero/falso.
Haz la conversión. En este paso, debes usar tu propia lógica para convertir el valor entrante en el valor saliente (generalmente usando los parámetros del transformador obtenidos en el paso anterior). Aquí primero dividimos el parámetro en dos partes con una coma (,), luego reemplazamos verdadero con la primera parte y falso con la segunda parte. Si el argumento no se puede dividir en dos partes, utilice verdadero/falso en su lugar.
Para generar el valor convertido, llame al método set_value() para lograrlo.
A continuación se muestra el código JavaScript para CustomBooleanTransformer, guárdelo como CustomBooleanTransformer.js.
Sys.BindingBase.Transformers.CustomBoolean = función (remitente, eventArgs) {
// paso 1, obtener el valor de entrada.
valor var = eventArgs.get_value();
if (tipo de (valor)! = 'booleano') {
valor = Boolean.parse(valor);
}
// paso 2, obtener argumentos se utilizará en la transformación.
var customString = eventArgs.get_transformerArgument();
if (cadena personalizada == nulo || cadena personalizada == '') {
cadena personalizada = 'verdadero,falso';
}
// paso 3, haz la transformación.
var customValues = customString.split(',');
si (valores personalizados.longitud! = 2)
{
valores personalizados[0] = 'verdadero';
valores personalizados[1] = 'falso';
}
var nuevoValor = valor? valores personalizados[0] : valores personalizados[1];
// paso 4, establece el valor transformado como salida.
eventArgs.set_value(nuevoValor);
}
Bien, ahora probemos este CustomBooleanTransformer. Agregue una casilla de verificación y un cuadro de texto a la página y vincúlelos. Cuando la casilla de verificación está seleccionada o desmarcada, el valor booleano convertido correspondiente se mostrará en el cuadro de texto.
A continuación se muestra la definición HTML del archivo ASPX. No olvide agregar una referencia al archivo CustomBooleanTransformer.js en ScriptManager.
<atlas:ScriptManager ID="sm1" runat="servidor">
<Guiones>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</scripts>
</atlas:ScriptManager>
<entrada id="miCasilla" tipo="casilla" />
<entrada id="miCuadroDeTexto" tipo="texto" />
A continuación se muestra la definición del script Atlas. Aquí, el argumento del transformador se especifica como 'Sí,No', para convertir el valor booleano verdadero en Sí y falso en No. <página xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<referencias>
</referencias>
<componentes>
<checkBox id="miCasilla" />
<textBox id="miTextBox">
<enlaces>
<binding dataContext="myCheckbox" dataPath="marcado"
propiedad="texto" transformar="CustomBoolean" transformadorArgumento="Sí,No" />
</enlaces>
</cuadro de texto>
</componentes>
</página>