API del cliente
Hay una pequeña API que se puede usar en el cliente para lograr varios efectos en su propio código del cliente. Debido a que alguna rutina no se puede ocultar, en teoría, puede usar el cliente para verificar todas las variables, características y funciones definidas por el cliente. Sin embargo, muchos de ellos se pueden cambiar. Lo siguiente resume el objeto cliente que le recomendamos que use.
Tabla 3. Objeto cliente
Nombre Tipo de descripción
PAGE_ISVALID La variable booleana señaló si la página es actualmente válida. Verificar los scripts siempre mantenga la variable más reciente.
Page_Validator Element Array Esta es una matriz que contiene todas las verificaciones en la página.
Page_ValidationActive Boolean las variables indican si debe verificarse. Establezca esta variable en FALSE se puede probar mediante programación.
Atributos de boolen ISVALID Cada dispositivo de verificación del cliente tiene la propiedad, señalando si el dispositivo de verificación es actualmente válido. Tenga en cuenta que en la versión PDC, este atributo se mezcla con ISVALID.
Evitar la verificación del cliente
Una tarea que a menudo necesita ejecutar es agregar el botón "Cancelar" o el botón de navegación en la página. En este caso, incluso si hay errores en la página, también puede usar el botón para enviar la página. Debido a que el evento OnClick del botón cliente ocurre antes del evento OnSubmit del formulario, puede evitar enviar la inspección y el omitido de la verificación. Lo siguiente muestra cómo usar el control de imagen HTML como el botón "Cancelar" para completar la tarea:
<input type = image runat = servidor
Valor = cancelar
OnClick = page_validationActive = false;
onServerClight = cmdcancel_click>
Use el botón o el control de Button para ejecutar cierta confusión, porque el evento OnClick supone que es un evento de servidor con el mismo nombre. Debe establecer este evento en el script del cliente:
<ASP: ImageButton Runat = Server ID = CMDIMGCANCEL
alternatetext = cancelar
OnClick = cmdcancel_click/>
<Script Language = JavaScript>
document.all [cmdimgCancel] .onclick =
nueva función (page_validationActive = false;);
</script>
Otro método para resolver este problema es establecer una determinada configuración del botón "Cancelar" para que no active el evento de envío en el script del cliente al regresar. Los controles HtmlinputButton y LinkButton son los ejemplos.
Efecto especial
Otro requisito común es que, además de la información de error mostrada por el dispositivo de verificación en sí, se necesitan algunos otros efectos. En este caso, cualquier modificación que haga debe llevarse a cabo al mismo tiempo en el servidor o el cliente. Supongamos que necesita agregar una etiqueta para cambiar el color de acuerdo con si la entrada es válida. La siguiente es cómo implementar esta tarea en el servidor:
Public Class ChangeColorPage: Page {
etiqueta pública lblzip;
Valor público de RegulaxPressionValidator;
Anulación protegida void overoad (EventArgs e) {{
lblzip.forecolor = valzip.isvalid?
}
}
Todos los métodos anteriores son perfectos, pero siempre que modifique la verificación anterior, encontrará que a menos que realice la misma operación en el cliente, se verá muy inconsistente. El marco de verificación le permitirá evitar muchos de estos efectos duales, pero no puede evitar otros efectos que debe lograr al mismo tiempo en el cliente y el servidor. El siguiente es un fragmento que realiza la misma tarea en el cliente:
<ASP: etiqueta id = lblzip runat = servidor
Text = Zip Code:/>
<ASP: TextBox id = txtzip runat = servidor
onchange = txtziponchange ();
<ASP: regularxpressionValidator id = valzip runat = servidor
ControlTovalidate = txtzip
ErrorMessage = código postal no válido
ValidationXpression = [0-9] {5} /> <br>
<Script Language = JavaScript>
Función txtziponchange () {{) {
// Si la verificación del cliente no está en la actividad, no realizará ninguna operación
ifof (page_validators) == Undefined) return;
// Cambiar el color de la etiqueta
lblzip.style.color = valzip.isvalid?
}
</script>
Beta 1 API del cliente
Para la edición Beta 1, algunas funciones que se pueden llamar desde el script del cliente causarán otras situaciones.
Tabla 4. Funcionar desde la llamada de script del cliente
Descripción del nombre
ValidatorValidate (Val) utiliza un dispositivo de verificación del cliente como entrada. Haga que el dispositivo de verificación verifique su entrada y actualice su pantalla.
Validatorenable (Val, Enable) obtenga un dispositivo de verificación del cliente y un valor booleano. Habilitar o deshabilitar el dispositivo de verificación del cliente. Si está deshabilitado, el dispositivo de verificación del cliente no será evaluado y el validador del cliente siempre será válido.
ValidatorHookupControl (Control, Val) obtuvo un elemento HTML de entrada y un dispositivo de verificación del cliente. Modifique o cree el evento de cambio del elemento para que el dispositivo de verificación se pueda actualizar durante el cambio. Esta función es adecuada para verificaciones personalizadas basadas en múltiples valores de entrada.
Su propósito especial es habilitar o deshabilitar el dispositivo de verificación. Si desea verificar que solo entra en vigencia en circunstancias específicas, es posible que deba cambiar el estado de activación al mismo tiempo en el servidor y los clientes, de lo contrario encontrará que el usuario no puede enviar la página.
El siguiente es el ejemplo anterior más un campo.
Public Class Conditional: Página {
Public htmlinputcheckbox chksameas;
Investigación pública de Validator RfvalshipAddress;
Anulación protegida void validate () {) {)
Bool habilitando =!
rfvalshipAddress.enabled = EnlAntShip;
base.validate ();
}
}
El siguiente es el código del cliente equivalente:
<input type = checkbox runat = servidor id = chksameas
OnClick = OnChangeSeMeas ();> lo mismo que la dirección de pago <br>
<Script Language = JavaScript>
Function onChangeSeMeas () {
vartleship =!
Validatorenable (rfValshipAddress, Enlanship);
}
</script>
Reglas efectivas e información de error útil
Cada dispositivo de verificación muestra información de error específica sobre condiciones específicas en controles específicos. Hay algunas reglas que confirman si es válido.
Todas las verificaciones vacías (a excepción de RequiredFieldValidator) se consideran válidas. Si un valor vacío no es válido, generalmente necesita un Validator requerido y otro verificador. Debe hacer esto, porque en general, siempre desea mostrar información de error diferente sobre el dispositivo de verificación vacía y la efectividad. También puede usar información poco clara, como "debe ingresar un valor, y este valor debe ser entre 1 y 10".
Otras reglas especiales utilizadas cuando el campo de entrada no se puede convertir en un tipo de datos especificados está relacionada con comparación y rangalidador. El proceso de evaluación de validez del compartimento de ControlTocompare especifica el proceso de evaluación de validez es el descrito a continuación:
Si el campo de entrada referenciado por ControlTovalidate está vacío, es efectivo.
Si el campo de entrada referenciado por ControlTovalidate no se puede convertir al tipo de datos requerido, no es válido.
Si el campo de entrada referenciado por ControlTocompare no se puede convertir al tipo de datos requerido, es válido.
El campo de entrada se convierte al tipo de datos requerido y se compara.
El tercer paso parece un poco inconsistente. La razón de esto es porque si el dispositivo de verificación verifica la efectividad de múltiples campos al mismo tiempo, es difícil escribir información de error significativa para el dispositivo de verificación. Se debe utilizar un dispositivo de verificación independiente para informar la situación de error en el campo de entrada ControlTocompare. Rangalidator tiene métodos de trabajo similares, con propiedades máximas y mínimas.
Funciones de propiedades habilitadas, visibles y de visualización
La diferencia entre las propiedades habilitadas, visibles y de visualización del dispositivo de verificación puede no ser muy obvia.
Display = Ninguno se puede usar para especificar que el dispositivo de verificación no muestra directamente ningún contenido, pero aún evalúa, aún afecta la efectividad general y aún puede poner errores en el resumen del cliente y el servidor. Para la verificación del cliente, estos valores están determinados para utilizar las características de estilo visible o usar las características de estilo de visualización para abrir o cerrar el dispositivo de verificación. Para la verificación de servidor, Display = Dynamic significa que la entrada no muestra ningún contenido cuando la entrada es válida, y Display = static representa un espacio que no cambia (). La última configuración debe doblarse en ningún contenido cuando la celda que contiene solo el dispositivo de verificación en la tabla es válido.
¿Por qué no solo usar Visible = False para hacer que el dispositivo de verificación sea visible? En ASP+, el atributo visible del control tiene muchos significados: el control de visible = false no se procesará ni se mostrará en absoluto. Se debe precisamente a este significado que el visible = falso del dispositivo de verificación significa que no solo no muestra ningún contenido, sino que tampoco se puede usar. Este dispositivo de verificación no se evaluará, no afectará la validez de la página, ni se pondrá en abstracto.
Habilitado es neutral. En la mayoría de los casos, el efecto de habilitado = falso y visible = falso es exactamente el mismo. En la edición Beta 1 o la versión superior, hay una diferencia importante: en la verificación del cliente, el dispositivo de verificación deshabilitado aún se enviará al navegador, pero está en un estado discapacitado. Puede usar la función Validatorenable en el script del cliente para activar el dispositivo de verificación.
Cuando use Visible o habilitado para controlar si verificar, preste atención al pedido de pedido en el servidor anterior. O cambiar antes de la verificación, o volver a verificar después del cambio. De lo contrario, sus valores ISVALID no reflejarán los cambios en los atributos.
Control de Validador Custom
La forma más fácil de extender el marco de verificación es utilizar el control CustomValidator. Este control se puede utilizar para realizar verificaciones de que no se pueden realizar otros controles de verificación, pero también pueden ejecutar verificaciones que necesitan acceder a información en el servidor (como bases de datos o servicios web).
Si se agrega CustomValidator con una sola función de verificación del servidor, notará que el dispositivo de verificación no participa en la verificación del cliente. Cuando el usuario cambia entre cada campo con la tecla TAB, el CustomValidator no se actualizará, y el servidor redondo de Trip debe realizar su verificación a la vez. Si desea utilizar CustomValidator para realizar una verificación que no requiere ninguna información en el servidor, también puede usar la propiedad ClientValidationFunction para que el dispositivo de verificación participe por completo en la verificación del cliente. Supongamos que proporciona una función ClientValidation. Pero de hecho, es solo una parte de la verificación. La verificación de la función de verificación del cliente no excede la verificación de la ejecución en el servidor porque los piratas informáticos pueden evitar fácilmente la función de verificación.
El siguiente es un ejemplo simple del uso de CustomValidator en el cliente y el servidor, solo verifique si la entrada es uniforme. Presentemos la función del servidor (en C#):
{servicio parcial) {posición
intentar {
int i = int.FromString (valor);
Return ((i % 2) == 0);
} Atrapar {
Devolver falso;
}
}
El siguiente es el método de declaración de la función en el cliente y una función de verificación del cliente que realiza la misma verificación. Este suele ser un formulario JScript, pero si su objetivo es Microsoft® Internet Explorer, también puede usar el formulario VBScript®.
<ASP: CustomValidator ID = CustomVal2 Runat = Server
ErrorMessage = los números no se pueden eliminar!
ControlTovalidate = txtCustomData
onservalidationFunction = serverValidation
ClientValidationFunction = checkeven /> <br>
Campo de datos: <ASP: TextBox id = TxtCustosData runat = Server />
<Script Language = JavaScript>
<!-
Función checkeven (fuente, valor) {{
valor var = parseint (valor, 10);
if (isnan (val))
Devolver falso;
Retorno ((val % 2) == 0);
}
//->
</script>
Aquí hay algunas precauciones utilizando CustomValidator:
Similar a todos los demás controles de verificación (excepto para RequiredFieldValidator), si el campo de entrada está vacío, se considera que CustomValidator es efectivo.
Si se usa el navegador más antiguo o la verificación del cliente está cerrada, no se puede llamar a la función de verificación del cliente. Antes de definir la función, no tiene que verificar la función del navegador utilizado en el navegador, pero debe asegurarse de que el navegador no cause errores de script debido a la definición. Asegúrese de hacer el código de su cliente como una anotación de HTML, como se muestra en el siguiente ejemplo.
Se pasan dos parámetros a la función de su cliente y corresponden a los parámetros pasados a la función del servidor. El primero es el elemento del dispositivo de verificación del cliente, y el segundo es el valor de control especificado por el control de control. Sin embargo, en el cliente, puede elegir no definir los parámetros para la función, que funcionará normalmente.
Si usa versiones Beta1 o superiores, puede mantener el control de control como vacío. En este modo, la función del servidor siempre activará un viaje redondo redondo, y la función del cliente siempre se activará cada vez que intente enviarlo. Puede usar esta función para verificar los controles que otros métodos no pueden verificar, como CheckBoxList o Botones de radio separados. Si la condición se basa en múltiples controles, y no desea que el usuario evalúe la condición al cambiar entre cada campo en la página, puede usar este método.
Otra opción en la versión Beta 1 o superior es el evento de cambio de múltiples controles. El método es agregar algunos scripts integrados que llaman a la función del cliente ValidatorHookUpControl, como se describió anteriormente.
¿Qué controles se pueden verificar?
Para permitir que el control sea verificado por la referencia de control, el control debe tener atributos verificados. Todos los controles verificados tienen propiedades ValidationPropertyAttribute, que indican el atributo que debe leerse durante la verificación. Si escribe su propio control, puede especificar los atributos que se utilizarán proporcionando uno de ellos, para que el control esté involucrado en la verificación.
Para habilitar la verificación que se llevará a cabo normalmente en el cliente, el atributo debe corresponder a las características de valor del elemento HTML que muestra el cliente. Muchos controles complicados (como DataGrid y Calendar) no valen el cliente y solo pueden verificarse en el servidor. Por lo tanto, solo los controles más cercanos a los elementos HTML pueden participar en la verificación. Además, el control debe tener un único valor lógico en el cliente. Por lo tanto, RadioButtonList se puede verificar, pero la lista de cheques no puede.
Fin
La explicación mencionada anteriormente de la verificación ASP+ puede haber excedido el contenido que desea comprender. ¡Disfrútala!