Es allí una manera elegante para comparar una casilla de verificación y un cuadro de texto utilizando ASP.NET validadores?

StackOverflow https://stackoverflow.com/questions/88361

  •  01-07-2019
  •  | 
  •  

Pregunta

Tengo una Asp.Net repetidor, que contiene un cuadro de texto y una casilla de verificación.Necesito agregar validaciones del lado del cliente que se comprueba que cuando la casilla de verificación está seleccionada, el cuadro de texto sólo puede aceptar un valor de cero o en blanco.

Me gustaría usar uno o más de Asp.Net's controles de validación para lograr esto, para proporcionar una visualización coherente para errores del lado del cliente (en el lado del servidor los errores son manejados por el otro subsistema).

La Aep:CompareValidator no parece ser lo suficientemente flexible como para realizar este tipo de complejos de comparación, así que yo me quedo mirando la Aep:CustomValidator.

El problema que me estoy quedando en es que parece que no hay ninguna forma de pasar información personalizada en la función de validación.Este es un problema porque el ClientIds de la casilla de verificación y el cuadro de texto son desconocidas para mí en tiempo de ejecución (como que somos parte de un Repetidor).

Así que...Mis opciones parecen ser:

  1. Aprobar el cuadro de texto y casillas de verificación a la CustomValidator de alguna manera (no parece ser posible).
  2. Encontrar el cuadro de texto a través de JavaScript basado en los argumentos que se pasan por el CustomValidator.Esto es incluso posible, lo que con el ClientId ser ambiguo?
  3. Olvidar la validación por completo, y emiten JavaScript personalizado (lo que me permite pasar tanto ClientIds a una función personalizada).

Alguna idea sobre lo que podría ser una mejor manera de implementar esto?

¿Fue útil?

Solución

Creo que la mejor manera sería heredar BaseValidator en una nueva clase, y pasar esos Identificadores para su control como atributos.Usted debe ser capaz de resolver los Identificadores dentro de su validador, sin saber el pleno del lado del cliente ID que se genera en tiempo de ejecución.Usted debe obtener los datos de la validación en el servidor de la primera, y en el segundo cliente.

Otros consejos

No se puede poner el CustomValidator dentro del repetidor?Si no, usted puede crear dinámicamente cuando el repetidor está obligado usuario y FindControl()

protected MyDataBound(object sender, RepeaterItemEventArgs e) {
  (CheckBox)cb = (CheckBox)e.Item.FindControl("myCheckboxName");
  (TextBox)tb = (TextBox)e.Item.FindControl("myTextBox");
}

...o algo así.Hice el código de la parte superior de mi cabeza.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top